當前位置: 首頁> 最新文章列表> 如何通過PHP實現文件上傳與下載功能?

如何通過PHP實現文件上傳與下載功能?

gitbox 2025-06-17

如何通過PHP實現文件上傳與下載功能?

在現代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[&#39;REQUEST_METHOD&#39;] === &#39;POST&#39;) {
    $file = $_FILES[&#39;file&#39;];

    // 獲取文件名$filename = $file[&#39;name&#39;];

    // 獲取文件臨時存儲路徑$tmpPath = $file[&#39;tmp_name&#39;];

    // 設置目標存儲路徑$destination = &#39;uploads/&#39; . $filename;

    // 移動文件到目標路徑move_uploaded_file($tmpPath, $destination);

    echo &#39;File uploaded successfully!&#39;;
}
    

在這段代碼中,首先通過`$_FILES['file']`獲取文件信息,然後使用`move_uploaded_file()`函數將臨時文件移動到指定的目標路徑,最後使用`echo`輸出上傳成功的信息。

二、文件下載

文件下載是指將服務器上的文件傳輸到客戶端。 PHP提供了`readfile()`函數來實現文件下載。以下是一個基本的文件下載代碼示例:

$file = &#39;path/to/file.txt&#39;;

if (file_exists($file)) {
    header(&#39;Content-Description: File Transfer&#39;);
    header(&#39;Content-Type: application/octet-stream&#39;);
    header(&#39;Content-Disposition: attachment; filename=&#39; . basename($file));
    header(&#39;Content-Transfer-Encoding: binary&#39;);
    header(&#39;Expires: 0&#39;);
    header(&#39;Cache-Control: must-revalidate, post-check=0, pre-check=0&#39;);
    header(&#39;Pragma: public&#39;);
    header(&#39;Content-Length: &#39; . filesize($file));

    readfile($file);
    exit;
} else {
    echo &#39;File not found!&#39;;
}
    

在這段代碼中,首先通過`file_exists()`函數檢查要下載的文件是否存在。如果文件存在,我們設置必要的HTTP頭信息,如文件類型、文件名和文件長度等,確保文件能夠正確地下載。然後,使用`readfile()`函數將文件內容輸出到客戶端。

請注意,為了確保瀏覽器能夠正確處理文件類型和文件名,我們需要設置適當的HTTP頭信息,特別是`Content-Type`和`Content-Disposition`。

結語

本文介紹瞭如何使用PHP函數處理文件上傳和下載。通過`$_FILES`和`move_uploaded_file()`函數,開發者可以輕鬆實現文件上傳功能;通過`readfile()`函數和設置正確的HTTP頭信息,可以實現文件下載功能。這些技巧將在開發中為您節省大量時間,幫助您更高效地完成文件操作。