如何使用 PHP 上傳檔案:步驟與範例指南

本篇 ShengYu 介紹 PHP 檔案上傳範例,在現代網頁應用中,檔案上傳是常見且必要的功能之一。本文將為您介紹如何使用 PHP 實現檔案上傳功能,並提供一個完整的範例,幫助您快速上手。

步驟一:建立 HTML 表單

首先,我們需要一個 HTML 表單讓使用者選擇檔案並送出。以下是一個簡單的 HTML 表單範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>File Upload</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="fileToUpload">Select file to upload:</label>
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload File" name="submit">
</form>
</body>
</html>

這個表單中包含一個檔案選擇器 (<input type="file">) 和一個送出按鈕。enctype="multipart/form-data" 是必須的,這告訴瀏覽器如何編碼表單資料。

步驟二:處理檔案上傳的 PHP 腳本

接下來,我們需要一個 PHP 腳本來處理表單送出並保存上傳的檔案。以下是 upload.php 的範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$target_dir = "uploads/"; // 設定上傳目錄
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$fileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

// 檢查是否為實際檔案還是偽造的
if (isset($_POST["submit"])) {
$check = filesize($_FILES["fileToUpload"]["tmp_name"]);
if ($check !== false) {
echo "File is valid - " . $check . " bytes.";
$uploadOk = 1;
} else {
echo "File is not valid.";
$uploadOk = 0;
}
}

// 檢查檔案是否已存在
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}

// 檢查檔案大小
if ($_FILES["fileToUpload"]["size"] > 5000000) { // 限制檔案大小為 5MB
echo "Sorry, your file is too large.";
$uploadOk = 0;
}

// 限制檔案類型
$allowed_types = array("txt", "zip", "7z");
if (!in_array($fileType, $allowed_types)) {
echo "Sorry, only TXT, ZIP & 7Z files are allowed.";
$uploadOk = 0;
}

// 檢查 $uploadOk 是否為 0
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file " . htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
}
?>

說明

  1. 表單設定<form> 標籤中的 enctype="multipart/form-data" 是必須的,這告訴瀏覽器如何編碼表單資料。
  2. $_FILES 變數$_FILES 是一個全域變數,用來保存上傳的檔案資訊,包括檔名、類型、臨時檔案名、錯誤和大小等。
  3. 檔案驗證:在實際上傳檔案之前,腳本會進行一系列檢查,包括檔案類型、大小和是否已存在等。

結論

透過以上步驟,您可以輕鬆實現 PHP 的檔案上傳功能。這個範例提供了一個基本的框架,您可以根據實際需求進一步擴展和修改。例如,新增更多的檔案類型支持、更嚴格的檔案驗證邏輯等。

以上就是 PHP PHP 檔案上傳範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
如果你想學習 PHP 相關技術,可以參考看看下面的文章,
如何在 PHP 中實現上傳檔案並儲存到 MySQL 資料庫
PHP 和 PDO 進行資料庫操作
PHP 執行發生錯誤在 Chrome/Firefox 上顯示 Error 500,要怎麼讓 PHP 顯示錯誤
PHP實現圖片上傳與顯示功能的完整指南
如何使用 PHP 上傳圖片儲存到 MySQL 資料庫並顯示圖片