php基礎知識(5)-檔案上傳
php基礎知識-檔案上傳
範例程式碼下載頁http://xieye.iteye.com/blog/1336095
可以使使用者上傳文本和二進位檔案。用 PHP 的認證和檔案操作函數,可以完全控制允許哪些人上傳以及檔案上傳後怎樣處理。
相關的設定: 請參閱 php.ini 的 file_uploads,upload_max_filesize,upload_tmp_dirpost_max_size 以及 max_input_time 設定選項
預設情況下,php的配置允許上傳,而且檔案大小不能超過2M。
php上傳需要構建特殊表單,其實就是表單多了一個屬性 enctype="multipart/form-data",還有表單元素中多了一個file元素。
在服務端需要使用move_uploaded_file 函數,並有一個$_FILE超全域變數可用。
以下抄自php手冊
<<<
$_FILES['userfile']['name']
用戶端機器檔案的原名稱。
$_FILES['userfile']['type']
檔案的 MIME 類型,如果瀏覽器提供此資訊的話。一個例子是“image/gif”。不過此 MIME 類型在 PHP 端並不檢查,因此不要想當然認為有這個值。
$_FILES['userfile']['size']
已上傳檔案的大小,單位為位元組。
$_FILES['userfile']['tmp_name']
檔案被上傳後在服務端儲存的臨時檔案名稱。
$_FILES['userfile']['error']
和該檔案上傳相關的錯誤碼。此項目是在 PHP 4.2.0 版本中增加的。
>>>
建議1:實際應用中使用者上傳的檔案不應與程式放在同一目錄(那是個糟糕的習慣),本教程為簡單起見放到了一起。
建議2:為系統安全,總是應該給上傳檔案重新命名,如需儲存原檔案名稱,可以儲存到資料庫。
建議3:如果使用者經常會上傳檔案,則應該在某個目錄下建子目錄,如uploadfile目錄下有20120102,20120103等按天的目錄,
使用者上傳的檔案按天存放在各自的目錄中。
建議4:不建議把上傳檔案按內容存放於各自的檔案夾,除非檔案少。因為同一目錄下有太多檔案時(比如超過10000個),系統檢索速度會變慢
,無論linux還是windows。
建議5:如果建了子目錄,通常需要把路徑也存放於資料庫中。
例子1:
http://localhost/command/peixun/upload/1.php
普通的上傳檔案的代碼,上傳完之後可以到檔案夾中檢查一下是否真的上傳了。
例子2
參考來源;http://www.phpletter.com/Our-Projects/AjaxFileUpload/
使用了jquery庫和一個jquery外掛程式ajaxfileupload
測試url
http://localhost/command/peixun/upload/2.php
用js來上傳檔案,用戶端代碼變了,但服務端代碼完全不變。
代碼可下載
1.php
longs; echo $html; } else { $file = $_FILES['file1']; $oldname = $file['tmp_name']; $result = move_uploaded_file($oldname, $file['name']);//可以隨意替換名稱 echo $file['name'] . '上傳成功,請到當前檔案夾下去檢查'; }
2.php
Ajax檔案上傳樣本
longs; echo $html; } else { //注意:這裡是不顯示的。 $file = $_FILES['fileToUpload']; $oldname = $file['tmp_name']; $result = move_uploaded_file($oldname, $file['name']);//可以隨意替換名稱 echo '{}'; }