在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響應頭實現文件下載。示例代碼簡單易懂,適合初學者參考和應用。開發者可以根據實際需求進一步完善功能,提高項目的用戶體驗。