fopen
是 PHP 中用于打開文件的一個內置函數。它可以用于文件上傳和下載,但需要與其他函數結合使用。
在處理文件上傳時,通常會將用戶上傳的文件保存到服務器上。這里是一個簡單的例子:
// 檢查是否有文件上傳
if ($_FILES["file"]["error"] > 0) {
echo "Error: " . $_FILES["file"]["error"] . "<br>";
} else {
// 確定要保存文件的路徑
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
// 嘗試將文件移動到指定目錄
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
echo "The file " . basename($_FILES["file"]["name"]) . " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
在處理文件下載時,可以使用 fopen
和 fpassthru
函數將文件從服務器發送到客戶端。這里是一個簡單的例子:
// 設置文件名和文件路徑
$filename = "example.txt";
$filepath = "downloads/" . $filename;
// 檢查文件是否存在
if (file_exists($filepath)) {
// 打開文件
$file = fopen($filepath, "rb");
// 設置頭信息以觸發下載
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Length: " . filesize($filepath));
// 讀取并發送文件內容
fpassthru($file);
// 關閉文件
fclose($file);
// 退出腳本
exit;
} else {
echo "File not found.";
}
在這個例子中,我們首先檢查文件是否存在。如果存在,我們使用 fopen
以二進制只讀模式(“rb”)打開文件。然后,我們設置響應頭以告知瀏覽器這是一個文件下載。最后,我們使用 fpassthru
函數讀取文件內容并將其發送給客戶端。完成后,我們關閉文件并退出腳本。