| 雖然檔案上傳已經不是新鮮事了,但是總覺得自己寫的應該比較容易看得懂,遇到問題要討論也比較方便一些。 一、前置作業 PHP 檔案上傳運作原理 PHP 上傳檔案時會先將檔案移到暫存目錄,上傳成功後再將檔案送往上傳目錄並自動清除暫存檔 php.ini 檔案上傳相關設定 ; Whether to allow HTTP file uploads. 檔案上傳,預設為開啟 file_uploads = On ; Temporary directory for HTTP uploaded files (will use system default if not ; specified). PHP 暫存目錄設定,預設為系統暫存目錄,若需設定請將前置分號移除 ;upload_tmp_dir = ; Maximum allowed size for uploaded files. PHP 預設上傳限制為 2M upload_max_filesize = 2M 二、檔案上傳示範 (big5) file.htm 1. 範例檔案為 big5 編碼,因 utf-8 編碼有中文檔案名上傳問題,之後再討論。2. 上傳檔案時,form 的 enctype 屬性要設定為 multipart/form-data 3. <input type="hidden" name="max_file_size" value="1024"> 可限定上傳檔案大小(1k = 1024),要寫在 <input type="file" ... > 之前 file_ok.php 1. PHP 4.1 之前版本,要用 $HTTP_POST_FILES 取代 $_FILES2. $uploaddir 為上傳目錄設定。 3. 移除檔案可使用 unlink() 函數,例 unlink($uploaddir.$uploadfile); 三、注意事項 UTF-8 的中文檔案名上傳問題 utf-8 編碼網頁無法在 big5 系統正確處理中文檔名,原因在於 move_uploaded_file() 不能處理 utf-8 中文編碼,需利用 iconv() 函數作轉碼,解決方法如下: 請將 move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile) 改為 move_uploaded_file($_FILES['myfile']['tmp_name'], iconv("utf-8", "big5", $uploadfile))
file_ok.php |
| 2008/05/07 11:57 |
Trackback Address :: http://blog.raienet.com/trackback/410
