PHP 上傳檔案與檔案類型判斷

常見的上傳應用有上傳圖片、上傳文件等等的,在 PHP 中,上傳檔案算是非常普遍的用法,也可以判斷檔案的類型或大小。要製做 PHP 檔案上傳系統有三個很重要的部分,分別是給網友使用的上傳頁面、PHP 程式以及上傳的目的地(也就是目標資料夾),以下範例我們分段製作並介紹運作方式。

步驟一、製做上傳頁面(採用 HTML 即可)
<html>
<body>
 <form action="upload.php" method="post" enctype="multipart/form-data">
 選擇檔案:<input type="file" name="file" id="file" /><br />
 <input type="submit" name="submit" value="上傳檔案" />
 </form>
 </body>
</html>
如果你對 HTML 很熟悉,那這個範例對你來說應該很簡單,表單 <form> 中的 enctype="multipart/form-data" 是代表你要上傳檔案,沒寫的話可能會無法運作唷!選擇檔案的部分,必須使用 file 的模式,瀏覽器會讓你選擇檔案。

步驟二、建立上傳檔案的資料夾

當網友選擇好檔案後,上傳的過程會先將檔案放在暫存區(tmp),必須整個移到你的資料夾中才算完成,建立上傳資料夾相當的簡單,如果你是使用 Windows 作業系統,就跟平時建立資料夾一樣容易,我們就先建立一個資料夾,命名為 upload。

步驟三、撰寫 PHP 上傳程式

在寫之前,我們必須先了解幾個 PHP $FILES 陣列的用法
  • $_FILES["file"]["name"]:上傳檔案的原始名稱。
  • $_FILES["file"]["type"]:上傳的檔案類型。
  • $_FILES["file"]["size"]:上傳的檔案原始大小。
  • $_FILES["file"]["tmp_name"]:上傳檔案後的暫存資料夾位置。
  • $_FILES["file"]["error"]:如果檔案上傳有錯誤,可以顯示錯誤代碼。
接著就可以把這些用法套用到我們的範例中
<?php
 if ($_FILES["file"]["error"] > 0){
  echo "Error: " . $_FILES["file"]["error"];
 }else{
  echo "檔案名稱: " . $_FILES["file"]["name"]."<br/>";
  echo "檔案類型: " . $_FILES["file"]["type"]."<br/>";
  echo "檔案大小: " . ($_FILES["file"]["size"] / 1024)." Kb<br />";
  echo "暫存名稱: " . $_FILES["file"]["tmp_name"];
  move_uploaded_file($_FILES["file"]["tmp_name"],"upload/".$_FILES["file"]["name"]); //移動檔案
 }
?>

範例最後面使用了 move_uploaded_file 來將剛剛上傳到暫存資料夾的檔案,移動到你在步驟二所建立的資料夾 upload 中。寫到這邊,基本的 PHP 上傳檔案系統應該就算是完成了,你還可以加入很多其它的判斷,增加系統的完整性。

延伸閱讀
用 JavaScript 判斷上傳檔案或圖片的檔案大小
© Copyright wibibi.com 網頁設計教學百科 基礎的網頁設計規劃、資料庫與程式設計 Since 2012
PHP Smarty MySQL JQuery Apache W3C