在Web开发中,文件上传和下载是非常常见且重要的功能。无论是用户上传图片、文档,还是需要从服务器下载文件,后端代码都起着关键作用。本文将详细讲解如何使用PHP完成文件上传与下载功能,并提供实用的代码示例供参考。
文件上传是将本地文件传输到服务器的过程。PHP内置了丰富的函数和变量,方便开发者实现上传功能。
首先,需要在前端创建一个文件上传表单,方便用户选择文件:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
在upload.php中,使用$_FILES超全局变量获取上传文件信息,并将文件从临时目录移动到指定位置:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$file = $_FILES['file'];
<p>// 获取文件名<br>
$filename = $file['name'];</p>
<p>// 获取临时路径<br>
$tmp_path = $file['tmp_name'];</p>
<p>// 指定保存路径<br>
$save_path = 'uploads/' . $filename;</p>
<p>// 将文件移动到目标目录<br>
move_uploaded_file($tmp_path, $save_path);</p>
<p>echo '文件上传成功!';<br>
}<br>
?><br>
确保服务器上有用于存放上传文件的目录,否则上传操作会失败。可以用以下代码检查并创建目录:
<?php
if (!file_exists('uploads')) {
mkdir('uploads', 0777, true);
}
?>
文件下载是指将服务器上的文件传输到用户的本地。PHP通过设置HTTP头实现文件的安全下载。
在download.php中,指定文件路径,判断文件是否存在,然后设置响应头并输出文件内容:
<?php
$file_path = 'files/document.pdf';
<p>if (file_exists($file_path)) {<br>
header('Content-Description: File Transfer');<br>
header('Content-Type: application/octet-stream');<br>
header('Content-Disposition: attachment; filename=' . basename($file_path));<br>
header('Content-Length: ' . filesize($file_path));<br>
header('Pragma: public');<br>
header('Expires: 0');</p>
<p>readfile($file_path);<br>
exit;<br>
} else {<br>
die('文件不存在!');<br>
}<br>
?><br>
确保指定的下载文件存在于服务器的相应目录下,否则用户将无法成功下载。
本文系统地介绍了PHP后端实现文件上传与下载的关键步骤。通过$_FILES获取上传文件信息,利用move_uploaded_file保存文件,以及通过设置HTTP响应头实现文件下载。示例代码简单易懂,适合初学者参考和应用。开发者可以根据实际需求进一步完善功能,提高项目的用户体验。