8.
上傳與分頁
一、 關於上傳
- 若表單中有file元件(用來上傳的元件),其表單編碼(enctype)一定要加上:
enctype="multipart/form-data"
- 記得建立一個資料夾,例如:uploads(linux下權限記得設定為777)
- 每上傳一個附檔(假設file欄位名稱為file),都會產生一組 $_FILES 超級全域變數:
- (1) $_FILES['file']['name']:上傳檔案原始名稱。
- (2) $_FILES['file']['type']:檔案的 MIME 類型,例如“image/gif”。
- (3) $_FILES['file']['size']:已上傳檔案的大小,單位為bytes。
- (4) $_FILES['file']['tmp_name']:檔案被上傳後的臨時檔案名。
- (5) $_FILES['file']['error']:和該檔案上傳相關的錯誤代碼。
- 上傳的步驟:送出上傳→檔案會暫時放到tmp中→程式要搬移該檔到指定的位置。
- 搬移上傳檔方法:move_uploaded_file(暫存檔 , 新路徑檔名)
二、 中文檔名的問題
- 在windows下,中文檔名是用Big5儲存,若網站是UTF-8編碼,會無法下載。
- 一般解決方式有幾種:
- (1) 無視之,或請使用者盡量安裝在Linux環境,或者告知僅支援英文數字檔名。
- (2) 上傳時,強制轉換成英文數字檔名。下載時,有三種作法:
- a. 下載時即時產生檔案,此法若遇到大檔就不適合。
- b. 將英文檔名複製另一份並改為中文檔名(看平台來選擇適當編碼存檔)
- c. 最後一種就是什麼都不處理,直接用英文數字存檔,最簡單。
- 若要改成英文數字檔名,可用新聞序號為主檔名,從資料夾觀看時會比較容易辨識;並搭配順序或亂數產生其餘檔名,以避免檔名重複。
- 取得附檔名的方法:(詳見: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);
三、 上傳多個檔案
- file欄位要加上multiple始可多選,name要加上[],使之變成陣列,例如:
<input type="file" name="file[]" multiple>
- 上傳後,陣列會像這樣:$_FILES['file']['name'][0]、$_FILES['file']['name'][1]
四、 建立檔案資料表eznews_files
五、 分頁工具
- 請將PageBar.php引入,並在$sql和mysql_query($sql);之間插入以下語法:
$PageBar = new PageBar($sql, 10);
$bar_arr=$PageBar->makeBar();
$sql=$bar_arr['sql'];
$bar=$bar_arr['bar'];
- 將$bar放到適當位置,這就是分頁工具(BootStrap3版)。