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

程式範例:

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 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/";
   $tmpfile=$_FILES["uploadfile"]["tmp_name"];
   $file2=mb_convert_encoding($_FILES["uploadfile"]["name"],"big5","utf8");
   if(move_uploaded_file($tmpfile,$uploaddir.$file2))
   {
      echo "上傳成功<br>";
      echo "檔案名稱:".$_FILES["uploadfile"]["name"]."<br>";
      echo "檔案類型:".$_FILES["uploadfile"]["type"]."<br>";
      echo "檔案大小:".$_FILES["uploadfile"]["size"]."<br>";
   }
   else
   {
      echo "上傳失敗!<br> ";
      echo "檔案名稱:".$_FILES["uploadfile"]["name"]."<br>";
      echo "檔案類型:".$_FILES["uploadfile"]["type"]."<br>";
      echo "檔案大小:".$_FILES["uploadfile"]["size"]."<br>";
      echo "失敗原因:".$_FILES['uploadfile']['error']."<br>";
   }
   ?>
</body>
</html>

沒有留言: