選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

PHP 教程

PHP HOME PHP 簡介 PHP 安裝 PHP 語法 PHP 註釋 PHP 變數 PHP Echo / Print PHP 資料型別 PHP 字串 PHP 數字 PHP 型別轉換 PHP 數學 PHP 常量 PHP 魔術常量 PHP 運算子 PHP If...Else...Elseif PHP Switch PHP 迴圈 PHP 函式 PHP 陣列 PHP 超全域性變數 PHP 正則表示式

PHP 表單

PHP 表單處理 PHP 表單驗證 PHP 表單必填項 PHP 表單 URL/電子郵件 PHP 表單完成

PHP 高階

PHP 日期和時間 PHP Include PHP 檔案處理 PHP 檔案開啟/讀取 PHP 檔案建立/寫入 PHP 檔案上傳 PHP Cookies PHP Sessions PHP 過濾器 PHP 高階過濾器 PHP 回撥函式 PHP JSON PHP 異常

PHP OOP

PHP 什麼是 OOP PHP 類/物件 PHP 建構函式 PHP 解構函式 PHP 訪問修飾符 PHP 繼承 PHP 常量 PHP 抽象類 PHP 介面 PHP Trait PHP 靜態方法 PHP 靜態屬性 PHP 名稱空間 PHP 可迭代物件

MySQL 資料庫

MySQL 資料庫 MySQL 連線 MySQL 建立資料庫 MySQL 建立表 MySQL 插入資料 MySQL 獲取最後 ID MySQL 插入多條資料 MySQL 預處理 MySQL 查詢資料 MySQL Where MySQL Order By MySQL 刪除資料 MySQL 更新資料 MySQL 限制資料

PHP XML

PHP XML 解析器 PHP SimpleXML 解析器 PHP SimpleXML - 獲取 PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX 簡介 AJAX PHP AJAX 資料庫 AJAX XML AJAX 即時搜尋 AJAX 投票

PHP 示例

PHP 示例 PHP 編譯器 PHP 測驗 PHP 練習 PHP 伺服器 PHP 證書

PHP 參考手冊

PHP 概述 PHP 陣列 PHP 日曆 PHP 日期 PHP 目錄 PHP 錯誤 PHP 異常 PHP 檔案系統 PHP 過濾器 PHP FTP PHP JSON PHP 關鍵詞 PHP Libxml PHP 郵件 PHP 數學 PHP 雜項 PHP MySQLi PHP 網路 PHP 輸出控制 PHP 正則表示式 PHP SimpleXML PHP Stream PHP String PHP 變數處理 PHP XML 解析器 PHP 壓縮 PHP 時區

PHP 檔案上傳


使用 PHP,可以輕鬆地將檔案上傳到伺服器。

但是,方便伴隨著危險,所以在允許檔案上傳時務必小心!


配置 "php.ini" 檔案

首先,確保 PHP 已配置為允許檔案上傳。

在你的 "php.ini" 檔案中,搜尋 file_uploads 指令,並將其設定為 On

file_uploads = On

建立 HTML 表單

接下來,建立一個 HTML 表單,允許使用者選擇他們想要上傳的影像檔案。

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  選擇要上傳的圖片
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="上傳圖片" name="submit">
</form>

</body>
</html>

上面的 HTML 表單需要遵循的一些規則

  • 確保表單使用 method="post"
  • 表單還需要具有以下屬性:enctype="multipart/form-data"。它指定了在提交表單時要使用的內容型別。

如果缺少上述要求,檔案上傳將無法工作。

其他需要注意的事項

  • <input> 標籤的 type="file" 屬性將輸入欄位顯示為檔案選擇控制元件,旁邊還有一個 "瀏覽" 按鈕。

上面的表單會將資料傳送到名為 "upload.php" 的檔案,我們將在下一步建立它。



建立上傳檔案的 PHP 指令碼

"upload.php" 檔案包含上傳檔案的程式碼。

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// 檢查檔案是否為實際的影像檔案或偽影像
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "檔案是影像 - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "檔案不是影像。";
    $uploadOk = 0;
  }
}
?>

PHP 指令碼說明

  • $target_dir = "uploads/" - 指定檔案將被放置的目錄。
  • $target_file 指定要上傳檔案的路徑。
  • $uploadOk=1 尚未被使用(稍後將使用)。
  • $imageFileType 儲存檔案的副檔名(小寫)。
  • 接下來,檢查檔案是否為實際的影像檔案或偽影像。

注意:你需要在 "upload.php" 檔案所在的目錄中建立一個名為 "uploads" 的新目錄。上傳的檔案將儲存在那裡。


檢查檔案是否已存在

現在我們可以新增一些限制。

首先,我們將檢查檔案是否已存在於 "uploads" 資料夾中。如果存在,將顯示一條錯誤訊息,$uploadOk 將被設定為 0。

// 檢查檔案是否已存在
if (file_exists($target_file)) {
  echo "抱歉,檔案已存在。";
  $uploadOk = 0;
}

限制檔案大小

我們上面 HTML 表單中的檔案輸入欄位名為 "fileToUpload"。

現在,我們要檢查檔案大小。如果檔案大於 500KB,將顯示一條錯誤訊息,$uploadOk 將被設定為 0。

// 檢查檔案大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "抱歉,你的檔案太大。";
  $uploadOk = 0;
}

限制檔案型別

下面的程式碼只允許使用者上傳 JPG、JPEG、PNG 和 GIF 檔案。所有其他檔案型別都會在將 $uploadOk 設定為 0 之前顯示錯誤訊息。

// 允許某些檔案格式
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "抱歉,只允許上傳 JPG、JPEG、PNG 和 GIF 檔案。";
  $uploadOk = 0;
}

完整的上傳檔案 PHP 指令碼

"upload.php" 的完整檔案現在如下所示:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// 檢查檔案是否為實際的影像檔案或偽影像
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "檔案是影像 - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "檔案不是影像。";
    $uploadOk = 0;
  }
}

// 檢查檔案是否已存在
if (file_exists($target_file)) {
  echo "抱歉,檔案已存在。";
  $uploadOk = 0;
}

// 檢查檔案大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "抱歉,你的檔案太大。";
  $uploadOk = 0;
}

// 允許某些檔案格式
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "抱歉,只允許上傳 JPG、JPEG、PNG 和 GIF 檔案。";
  $uploadOk = 0;
}

// 檢查 $uploadOk 是否因錯誤而設定為 0
if ($uploadOk == 0) {
  echo "抱歉,你的檔案未能上傳。";
// 如果一切正常,則嘗試上傳檔案
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "檔案 ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " 已上傳。";
  } else {
    echo "抱歉,上傳檔案時出錯。";
  }
}
?>

完整的 PHP 檔案系統參考

有關檔案系統函式的完整參考,請訪問我們的完整 PHP 檔案系統參考


×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援