網站程式設計-PHP

15-1 檔案上傳

  1. 在form標籤加上
    enctype="multipart/form-data"
    
  2. HTML
    <input type="file" name="XXX" >
    
  3. accept 屬性只能與<input type="file"> 配合使用。它規定能夠通過文件上傳進行提交的文件類型。
    
                    <input id="file" type="file" class="form-control" accept="image/*" >
    <input type="file" name="pic" id="pic" accept="image/gif, image/jpeg" />

     

  4. 記得建立一個資料夾,例如:uploads(linux下權限記得設定為777)
     
  5. 每上傳一個附檔(假設file欄位名稱為file),都會產生一組 $_FILES 超級全域變數:
    • (1)  $_FILES['file']['name']:上傳檔案原始名稱。
    • (2)  $_FILES['file']['type']:檔案的 MIME 類型,例如“image/gif”。
      http://www.w3school.com.cn/media/media_mimeref.asp
    • (3)  $_FILES['file']['size']:已上傳檔案的大小,單位為bytes。
    • (4)  $_FILES['file']['tmp_name']:檔案被上傳後的臨時檔案名。
    • (5)  $_FILES['file']['error']:和該檔案上傳相關的錯誤代碼。
    • (6) 取得檔案資訊
      http://liaosankai.pixnet.net/blog/post/27533126-php-%E5%8F%96%E5%BE%97%E6%AA%94%E6%A1%88%E7%9A%84%E5%89%AF%E6%AA%94%E5%90%8D%28php-get-file-extension%29
      $ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);

      官方的內建函式pathinfo(),只要再多給第二參數,就能直接取得所需資料,而且這個方式是全部效能上最好的一個,果然是個好辦法。pathinfo第二參考可傳入的值有:
      PATHINFO_DIRNAME:取得資料夾路徑
      PATHINFO_BASENAME:取得整個檔名(主+副)
      PATHINFO_EXTENSION:取得副檔名
      PATHINFO_FILENAME :取得主檔名
       
  6. 上傳的步驟:送出上傳→檔案會暫時放到tmp中→程式要搬移該檔到指定的位置。
     
  7. 搬移上傳檔方法:move_uploaded_file(暫存檔 , 新路徑檔名)

  8.  
  9.