欢迎访问宙启技术站
智能推送

PHP函数指南:如何处理文件上传和下载

发布时间:2023-07-22 19:07:38

在PHP中,处理文件上传和下载是一种常见的任务。在本指南中,我们将探讨如何使用PHP函数来处理文件上传和下载。

文件上传:

1. 创建一个包含文件上传表单的HTML页面。确保表单的enctype属性设置为multipart/form-data,以便能够上传文件。

2. 在PHP脚本中,使用$_FILES超全局变量来接收上传文件的信息。$_FILES是一个包含上传文件信息的数组。

   $file = $_FILES['fileToUpload'];
   

3. 验证文件上传是否成功以及是否存在错误。常见的错误码有UPLOAD_ERR_OK表示上传成功,UPLOAD_ERR_INI_SIZE表示上传文件大小超过了upload_max_filesize设置,UPLOAD_ERR_FORM_SIZE表示上传文件大小超过了HTML表单中MAX_FILE_SIZE设置。

   if ($file['error'] === UPLOAD_ERR_OK) {
       // 文件上传成功
   } else {
       // 文件上传失败
   }
   

4. 使用move_uploaded_file函数将上传的文件移动到指定的目录。

   $destination = 'uploads/' . $file['name'];
   if (move_uploaded_file($file['tmp_name'], $destination)) {
       // 文件移动成功
   } else {
       // 文件移动失败
   }
   

文件下载:

1. 在HTML页面中,创建一个包含下载链接的列表。为了让浏览器将文件下载而不是打开,设置链接的download属性为文件名。

   <a href="download.php?file=file.txt" download>Download File</a>
   

2. 创建一个PHP脚本(例如download.php),用于处理下载请求。在脚本中,使用readfile函数将文件发送到浏览器。

   $file = $_GET['file'];
   $filepath = 'uploads/' . $file;
   if (file_exists($filepath)) {
       header('Content-Description: File Transfer');
       header('Content-Type: application/octet-stream');
       header('Content-Disposition: attachment; filename="' . basename($filepath) . '"');
       header('Expires: 0');
       header('Cache-Control: must-revalidate');
       header('Pragma: public');
       header('Content-Length: ' . filesize($filepath));
       readfile($filepath);
   } else {
       echo 'File not found.';
   }
   

通过使用上述PHP函数,您可以轻松处理文件上传和下载。请记住,为了安全起见,始终对上传的文件进行验证和过滤,以防止潜在的安全漏洞。