溫馨提示×

PHP fopen函數(shù)與文件上傳下載

PHP
小樊
85
2024-09-04 23:42:23
欄目: 編程語言

fopen 是 PHP 中用于打開文件的一個內(nèi)置函數(shù)。它可以用于文件上傳和下載,但需要與其他函數(shù)結(jié)合使用。

  1. 文件上傳:

在處理文件上傳時,通常會將用戶上傳的文件保存到服務(wù)器上。這里是一個簡單的例子:

// 檢查是否有文件上傳
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.";
    }
}
  1. 文件下載:

在處理文件下載時,可以使用 fopenfpassthru 函數(shù)將文件從服務(wù)器發(fā)送到客戶端。這里是一個簡單的例子:

// 設(shè)置文件名和文件路徑
$filename = "example.txt";
$filepath = "downloads/" . $filename;

// 檢查文件是否存在
if (file_exists($filepath)) {
    // 打開文件
    $file = fopen($filepath, "rb");

    // 設(shè)置頭信息以觸發(fā)下載
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename=\"$filename\"");
    header("Content-Length: " . filesize($filepath));

    // 讀取并發(fā)送文件內(nèi)容
    fpassthru($file);

    // 關(guān)閉文件
    fclose($file);

    // 退出腳本
    exit;
} else {
    echo "File not found.";
}

在這個例子中,我們首先檢查文件是否存在。如果存在,我們使用 fopen 以二進制只讀模式(“rb”)打開文件。然后,我們設(shè)置響應(yīng)頭以告知瀏覽器這是一個文件下載。最后,我們使用 fpassthru 函數(shù)讀取文件內(nèi)容并將其發(fā)送給客戶端。完成后,我們關(guān)閉文件并退出腳本。

0