在Web開發中,文件上傳是常見且重要的功能。 PHP通過$_FILES全局變量實現文件的接收和管理。上傳流程通常包括客戶端提交文件,服務器保存到臨時目錄,驗證文件合法性,最後將文件移動到指定目錄完成上傳。
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上傳文件">
</form>
<?php
$fileName = $_FILES['file']['name'];
$fileSize = $_FILES['file']['size'];
$fileTmp = $_FILES['file']['tmp_name'];
$fileType = $_FILES['file']['type'];
?>
<?php
$allowedTypes = ['image/jpeg', 'image/png']; // 允許上傳的文件類型
$maxSize = 2 * 1024 * 1024; // 最大允许上傳文件大小,2MB
if (in_array($fileType, $allowedTypes) && $fileSize <= $maxSize) {
$destination = 'uploads/' . $fileName;
move_uploaded_file($fileTmp, $destination);
echo '文件上傳成功!';
} else {
echo '不允許上傳該類型的文件或文件大小超過限制!';
}
?>
文件下載是Web應用中的另一個關鍵功能。客戶端通過發送請求,服務器讀取文件並通過HTTP響應將文件傳輸給客戶端。設置合理的HTTP頭部確保文件能夠被正確下載和保存。
<span class="fun"><a href="download.php?file=文件名">下載文件</a></span>
<?php
$filePath = 'path/to/file/' . $_GET['file'];
if (file_exists($filePath)) {
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($filePath));
header('Content-Length: ' . filesize($filePath));
readfile($filePath);
} else {
echo '文件不存在!';
}
?>
通過合理的文件類型和大小校驗,結合正確的文件移動及下載頭設置,能夠有效保障文件上傳與下載的安全性和穩定性。希望本文的講解對PHP開發者理解底層文件處理原理有所幫助,並能在實際項目中靈活應用。