PHP文件上传和下载函数的使用方法详解
PHP语言是一个服务器端脚本语言,用于控制Web开发界面。它是一种高度模块化的语言,具有易于扩展的功能,因此在Web开发中,大量使用PHP语言开发。在Web开发中,经常需要上传和下载文件,因此PHP也提供了文件上传和下载的函数。
一、文件上传函数的使用方法
1.文件上传表单
在HTML表单中,需要添加一个<input type="file" name="file">的表单项来选择要上传的文件。在表单的action属性中,指定文件上传处理页面的地址。
<form action="upload.php">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
2.PHP 文件上传函数
PHP 通过 $_FILES 超全局变量来接收通过 HTTP POST 传递的文件,$_FILES 变量是一个多维数组,提供了多个文件上传信息的属性。其中,$_FILES['name'] 属性保存了文件的原始文件名,$_FILES['tmp_name'] 属性保存了文件上传到服务器上的临时文件名,$_FILES['type'] 属性保存了文件的 MIME 类型,$_FILES['size'] 属性保存了文件大小。
PHP提供了move_uploaded_file()函数,用于将上传的文件从临时文件夹中移动到指定目录中。该函数的 个参数为临时文件名,第二个参数为目标文件名,如果函数成功返回 true,否则返回 false。
3. PHP 文件上传的完整代码
if ($_FILES['file']['error'] > 0) {
echo '文件上传出错:' . $_FILES['file']['error'];
} else {
$filename = $_FILES['file']['name']; // 文件名
$tmp_name = $_FILES['file']['tmp_name']; // 临时文件名
$size = $_FILES['file']['size']; // 文件大小
$type = $_FILES['file']['type']; // 文件类型
$filedir = './uploads/'; // 文件上传的目录
if (!is_dir($filedir)) {
mkdir($filedir);
}
$target_file = $filedir . $filename;
if (file_exists($target_file)) {
echo '文件已存在';
} else if (move_uploaded_file($tmp_name, $target_file)) {
echo '文件上传成功';
} else {
echo '文件上传失败';
}
}
二、文件下载函数的使用方法
1. PHP 文件下载函数
PHP 可以通过header()函数来设置 HTTP 响应头,实现文件下载。为了实现文件下载,首先要在响应头中添加Content-Disposition属性,用于设置文件名。例如,若要下载文件名为test.jpg的文件,需要在响应头中添加Content-Disposition属性,其属性值为attachment; filename="test.jpg",这表示要将文件作为附加内容下载,并且将文件名设置为test.jpg。
2. PHP 文件下载的完整代码
$file = './test.jpg'; // 要下载的文件
if (!file_exists($file)) {
echo '文件不存在';
exit();
}
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
header('Content-Length: ' . filesize($file));
readfile($file);
三、总结
文件上传和下载是Web开发中常用的功能,PHP提供了丰富的函数对文件进行操作。文件上传需要添加表单,通过 $_FILES 超全局变量获取文件信息,并将文件从临时文件夹中移动到指定目录中。文件下载需要在响应头中添加 Content-Disposition 属性,用于设置文件名。在PHP中,使用header()函数设置响应头,使用readfile()函数读取文件内容并输出给客户端即可实现文件下载。
