Upload File vs PHP (多檔上傳)

PHP 上傳檔案的必要環境:

php.ini 之設定  [C:\AppServ\php5]

  1. 確認允許檔案上傳
    file_uploads = On
  2. 設定暫存目錄區的路徑
    upload_tmp_dir = "C:/temp"
  3. 設定可接受的上傳檔案大小
    upload_max_filesize = 10M

Apache 設定檔 httpd.conf  [C:\AppServ\Apache2.2\conf]

  1. 設定主機傳送及接收的等待時間(秒)
    Timeout 300

檔案上傳的表單 (Form),使用之注意事項:

  1. 以 POST 方式傳送資料
  2. <form> 標籤要加入
    enctype="multipart/form-data" 屬性
  3. 傳送資料的 <input> 標籤,必須設定 type="file" 屬性,以產生 瀏覽 按鈕。
  4. 建議設定一隱藏欄位:name="MAX_FILE_SIZE" ,value 必須設定一數字,做為上傳檔案大小的限制。
    單位:bytes
  5. 將表單中 type="file" 的 <input> 標簽名稱 name,改由陣列方式來處理

程式範例:

upload.htm
-------------------------------------------------------
<html> 
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <title>檔案上載</title>
</head>

<body>
   <form action="upload.php" method="post" enctype="multipart/form-data">
      <input type="hidden" name="MAX_FILE_SIZE" value="10000000">                                                
      選擇檔案一:<input name="uploadfile[]" type="file"> 
      選擇檔案二:<input name="uploadfile[]" type="file"> 
      選擇檔案三:<input name="uploadfile[]" type="file"> 
      <input type="submit" value="送出">
   </form>
</body>
</html>

 

upload.php
-------------------------------------------------------
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <title>多個檔案上傳處理</title>
</head>

<body>
   <?
   $uploaddir="./upload/"; 
   $i=count($_FILES["fileupload"]["name"]);
   for ($j=0 ; $j<$i ; $j++)
   {
      $tmpfile=$_FILES["uploadfile"]["tmp_name"][$j];
      $file2=mb_convert_encoding($_FILES["uploadfile"]["name"][$j],"big5","utf8");
      if(move_uploaded_file($tmpfile,$uploaddir.$file2))
     {
         echo "上傳成功<br>";
         echo "檔案名稱:".$_FILES["uploadfile"]["name"][$j]."<br>";
         echo "檔案類型:".$_FILES["uploadfile"]["type"][$j]."<br>";
         echo "檔案大小:".$_FILES["uploadfile"]["size"][$j]."<br>";
      }
     else
      {
         echo "上傳失敗!<br> ";
         echo "檔案名稱:".$_FILES["uploadfile"]["name"][$j]."<br>";
         echo "檔案類型:".$_FILES["uploadfile"]["type"][$j]."<br>";
         echo "檔案大小:".$_FILES["uploadfile"]["size"][$j]."<br>";
         echo "失敗原因:".$_FILES['uploadfile']['error'][$j]."<br>";
      }
   }
   ?>
</body>
</html>

2 則留言:

阿宏宏 提到...

$i=count($_FILES["fileupload"]["name"]);
有錯,應改成
$i=count($_FILES["uploadfile"]["name"]);
才會對

阿宏宏 提到...
作者已經移除這則留言。