PHP上传与下载文件
本文将从上传与下载两个方面对PHP文件操作进行阐述。
一、上传文件
1、基本原理:通过表单将文件上传到服务器,服务器接收并保存到指定路径下。
2、上传文件编写过程:
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="上传" /> </form>
接下来写PHP后台代码(upload.php):
if ($_FILES['file']['error'] > 0) { echo '上传错误:' . $_FILES['file']['error'] . '
'; } else { echo '上传文件名:' . $_FILES['file']['name'] . '
'; echo '上传文件类型:' . $_FILES['file']['type'] . '
'; echo '上传文件大小:' . ($_FILES['file']['size'] / 1024) . 'KB
'; echo '上传临时文件名:' . $_FILES['file']['tmp_name'] . '
'; if (file_exists('upload/' . $_FILES['file']['name'])) { echo '文件已存在,不需要上传'; } else { move_uploaded_file($_FILES['file']['tmp_name'], 'upload/' . $_FILES['file']['name']); echo '文件上传成功!'; } }
在后台代码中,首先判断上传文件是否有错,如果有就输出错误信息。如果上传的文件没有问题,就将文件从临时目录移动到指定目录下。可根据需要进行其他的处理操作。
二、下载文件
1、基本原理:通过PHP代码读取指定路径下的文件内容,再通过header()函数输出,让浏览器下载文件。
2、下载文件编写过程:
<?php $filename = 'test.txt'; // 下载文件名 $filepath = 'download/' . $filename; // 下载文件存放路径 if (!file_exists($filepath)) { echo '文件不存在,无法下载!'; exit; } $filesize = filesize($filepath); // 文件大小 $filename = basename($filepath); // 去除路径,只剩文件名 // 防止中文文件名乱码 $filename = iconv('utf-8', 'gb2312', $filename); // 设置header头信息 header("Content-type: application/octet-stream"); header("Accept-Ranges: bytes"); header("Accept-Length: $filesize"); header("Content-Disposition: attachment; filename=$filename"); // 打开并读取文件内容 $file = fopen($filepath, "r"); echo fread($file, $filesize); fclose($file); exit; ?>
在代码中,首先判断文件是否存在,若不存在则输出错误信息并退出。若存在,则设置header头信息,使浏览器弹出下载框,然后打开并读取文件内容,并输出到浏览器。通过以上代码可以完成简单的PHP文件下载功能。
三、其他操作
在实际的文件上传与下载操作中,可能还会涉及一些其他的操作。例如:
1、文件类型限制:可通过设置表单属性限制上传的文件类型,也可通过后台代码进行类型判断。
2、文件大小限制:可通过设置表单属性限制上传的文件大小,也可通过后台代码进行大小判断。
3、文件重命名:可以通过PHP代码对上传的文件名进行重命名。
4、批量上传:可以在表单中设置多个文件上传项。
5、文件压缩下载:使用PHP的ZipArchive类可以方便地压缩多个文件,供用户下载。