在現代Web開發中,文件上傳和下載是非常常見的功能。 PHP提供了一些內置函數來幫助開發者處理文件操作,包括上傳和下載。本文將詳細介紹如何使用PHP函數進行文件上傳和下載,並提供代碼示例供參考。
文件上傳是將本地文件傳輸到服務器的過程。在PHP中,使用`move_uploaded_file()`和`$_FILES`全局變量來處理文件上傳。
首先,確保HTML表單中包含一個文件上傳的輸入控件:
<form method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="Upload"> </form>
接著,在PHP代碼中,使用`$_FILES`全局變量來獲取上傳的文件信息。 `$_FILES`是一個關聯數組,包含了文件的名稱、類型、臨時存儲路徑等信息。
if ($_SERVER['REQUEST_METHOD'] === 'POST') { $file = $_FILES['file']; // 獲取文件信息$filename = $file['name']; // 文件名$tmpPath = $file['tmp_name']; // 臨時文件路徑// 上傳文件$destination = 'uploads/' . $filename; move_uploaded_file($tmpPath, $destination); echo 'File uploaded successfully!'; }
在上述代碼中,我們首先通過`$_FILES['file']`獲取文件信息,然後使用`move_uploaded_file()`將臨時文件移動到指定的目標路徑。最後,通過`echo`語句輸出上傳成功的提示信息。
文件下載是將服務器上的文件傳輸到客戶端的過程。 PHP中使用`readfile()`函數實現文件的下載。
以下是一個簡單的文件下載示例:
$file = 'path/to/file.txt'; // 設置要下載的文件路徑if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); readfile($file); // 輸出文件內容exit; } else { echo 'File not found!'; }
在此代碼中,首先通過`file_exists()`檢查文件是否存在。如果文件存在,設置相關的HTTP頭信息(如文件類型、文件名和文件大小等),然後使用`readfile()`將文件內容輸出到客戶端。
需要注意的是,正確的設置HTTP頭信息至關重要,特別是`Content-Type`和`Content-Disposition`,它們幫助瀏覽器正確解析文件並啟動下載。
本文介紹瞭如何使用PHP函數進行文件上傳和下載。通過`$_FILES`全局變量和`move_uploaded_file()`函數,你可以輕鬆實現將文件從本地上傳到服務器;通過設置合適的HTTP頭信息和`readfile()`函數,可以將服務器上的文件成功下載到客戶端。希望這些代碼示例對你的開發有所幫助。