首頁 > 後端開發 > php教程 > 如何使用PHP函數進行檔案上傳下載?

如何使用PHP函數進行檔案上傳下載?

王林
發布: 2023-07-25 15:14:01
原創
991 人瀏覽過

如何使用PHP函數進行檔案上傳和下載?

在現代的網路開發中,檔案上傳和下載是非常常見的功能。對於PHP開發者來說,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()函數讀取檔案內容並輸出到客戶端。

要注意的是,為了讓瀏覽器正確解析檔案類型和檔案名,需要設定Content-TypeContent-Disposition 頭資訊。

結語

本文介紹如何使用PHP函數進行檔案上傳和下載。在檔案上傳方面,透過$_FILES全域變數和move_uploaded_file()函數可以實現將本機檔案上傳到伺服器的功能。在檔案下載方面,透過設定HTTP頭資訊和使用readfile()函數可以實現將伺服器檔案下載到客戶端的功能。希望本文對您在開發上有所幫助。

以上是如何使用PHP函數進行檔案上傳下載?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板