17.
用PHP上傳檔案
一、 檔案上傳
- 請下載練習圖檔。
- 要上傳檔案,需要用file元件<input type="file" name="pic">
- 若想限制上傳格式,加入accept="image/gif,image/jpeg,image/png"(搜尋副檔名mime格式:http://filext.com/)
- 若表單中有file元件,表單一定要加上「enctype="multipart/form-data"」屬性
- 限制大小,需加在上傳欄位之前:<input type="hidden" name="MAX_FILE_SIZE" value="30000">
- 每上傳一張圖(假設file欄位名稱為pic),都會產生一組 $_FILES 超級全域變數:
- $_FILES['pic']['name']:上傳檔案原始名稱。
- $_FILES['pic']['type']:檔案的 MIME 類型,例如“image/gif”。
- $_FILES['pic']['size']:已上傳檔案的大小,單位為bytes。
- $_FILES['pic']['tmp_name']:檔案被上傳後的臨時檔案名。
- $_FILES['pic']['error']:和該檔案上傳相關的錯誤代碼。
- 上傳的步驟:送出上傳→圖會暫時放到主機的暫存目錄中(通常是tmp),接著要利用程式將該暫存檔搬移到您自己指定的位置。
- 搬移上傳檔方法:move_uploaded_file(暫存檔 , 新路徑檔名)
- 上傳多檔:<input type="file" name="pic[0]"><input type="file" name="pic[1]">,上傳後,取得檔名分別用$_FILES['pic']['name'][0]、$_FILES['pic']['name'][1],其餘的依此類推。
二、 php.ini裡面和上傳相關的設定
- file_uploads = on ;是否允許透過HTTP上傳文件。默認為ON。(表示允許)
- upload_tmp_dir ;文件上傳時暫存的地方,如果沒指定就會用系統默認的臨時文件夾
- upload_max_filesize = 2m ;即為允許上傳文件的最大值。默認為2M。
- post_max_size = 8m ;指透過表單(form)POST給伺服器所能接收的最大值,包括表單裡的所有值。默認為8M。
- max_execution_time = 30 ;每個PHP頁面運行的最大時間值(秒),默認值30秒。
三、 和後續處理檔案相關的函數
- file_exists (檔案路徑):判斷檔案是否存在
- unlink(檔案路徑):刪除檔案
- strrchr(檔名, ".") :找出指定字符在字串中的最後一次出現直到結尾的文字,可用來取得副檔名(會包含.)
- strtolower(文字):強制小寫