php如何實現檔案上傳
1.表單部分允許使用者上傳檔案,在html表單的宣告中要加上乙個上傳的屬性: enctype = 'multipart/form-data' 表單的method必須是post 表單選項max_file_size隱藏域用於限制上傳檔案大小,它必須放在檔案表單元素前面,單位為位元組。 如:
複製****如下:
2.處理上傳檔案上傳時,php收到關於該檔案的資訊陣列,這些資訊可以在$_files這個超級全域性陣列中找到。 如:如果表單中的檔案輸入框名字為upload_file,那麼關於該檔案的所有資訊都包含在陣列$_files['upload_file']裡面。 如:客戶上傳了乙個「aaa.jpg」的陣列值如下: name "p5pp.jpg" 上傳時檔案的名字 type 「image/jpeg" 檔案型別 tmp_name "/tmp/phpjksdf" 伺服器端的臨時檔名 error 上傳錯誤的返回值 size 2045 檔案實際大小
上面陣列裡面的error會返回不同的常量值,如下: upload_err_ok 沒有錯誤發生,檔案上傳成功 upload_err_ini_size 檔案大小超過了php.ini中upload_max_filesize選項限制的值 upload_err_form_size 上傳檔案的大小超過了html表單中max_file_size選項值。可在程式中檢查表單$files ['up_file']['size']來處理 upload_err_partial 檔案只有部分被上傳 upload_err_no_file 使用者沒有提供任何檔案上傳 上傳後處理的具體例子:
複製****如下:
函式: move_uploaded_file 移動上傳的臨時檔案到指定的目錄下 例子: move_uploaded_file('臨時檔名','指定檔案路徑')
is_uploaded_file 判斷是否是通過http post上傳的檔案 例子:
複製****如下:
if(!is_uploaded_file($_files['f']['tmp_name']))
3.相關引數
php上傳設計到的php.ini中的引數: file_uploads 是否允許上傳檔案,預設on
upload_tmp_dir 上傳檔案防止的臨時目錄,未指定則使用系統預設位置
upload_max_filesize 允許上傳檔案的大小的最大值,預設為2m
post_max_size 控制採用post方法進行一次表單提交中php所能接受的最大資料量,如果希望用php檔案上傳,則此值要改為比upload_max_filesize要大
max_input_time 以秒為單位對通過post/get/put方式接受資料時間進行限制。
memory_limit 為了避免正在執行的指令碼大量使用系統記憶體,php允許定義記憶體使用限額。通過設定此引數來制定單個指令碼程式可以使用的最大記憶體容量,應適當大於post_max_size值
max_execution_time 用來設定在強制終止指令碼前php等待指令碼執行完畢的時間,單位秒。次選項可限制死迴圈指令碼,但當存在乙個長時間的合法活動時(如:上傳大檔案),這項功能也會導致操作失敗。這樣情況下必須考慮將此變數增加。
4.考慮多檔案上傳可以利用$_files陣列就可以輕鬆實現多檔案上傳。$_files陣列可以獲取客戶端表單裡面所有的file域內容,從而獲得所有在同一表單上傳的檔案。
5.突破上傳的記憶體限制
方法一: 修改php.ini中memory_limit值,改為更大,如 64m 方法二: 使用apache rewrite方法,動態修改memory_limit的值。首先建立乙個.htaccess檔案,儲存在上傳檔案程式的 當前目錄即可.**如下: php_value memory_limit 100m php_value post_max_size 30m php_value upload_max_filesize 30m php_value max_execution_time 300 php_value max_input_tim 300 php_value display_errors on
1.表單部分允許使用者上傳檔案,在html表單的宣告中要加上乙個上傳的屬性: enctype = 'multipart/form-data' 表單的method必須是post 表單選項max_file_size隱藏域用於限制上傳檔案大小,它必須放在檔案表單元素前面,單位為位元組。 如:
複製****如下:
2.處理上傳檔案上傳時,php收到關於該檔案的資訊陣列,這些資訊可以在$_files這個超級全域性陣列中找到。 如:如果表單中的檔案輸入框名字為upload_file,那麼關於該檔案的所有資訊都包含在陣列$_files['upload_file']裡面。 如:客戶上傳了乙個「aaa.jpg」的陣列值如下: name "p5pp.jpg" 上傳時檔案的名字 type 「image/jpeg" 檔案型別 tmp_name "/tmp/phpjksdf" 伺服器端的臨時檔名 error 上傳錯誤的返回值 size 2045 檔案實際大小
上面陣列裡面的error會返回不同的常量值,如下: upload_err_ok 沒有錯誤發生,檔案上傳成功 upload_err_ini_size 檔案大小超過了php.ini中upload_max_filesize選項限制的值 upload_err_form_size 上傳檔案的大小超過了html表單中max_file_size選項值。可在程式中檢查表單$files ['up_file']['size']來處理 upload_err_partial 檔案只有部分被上傳 upload_err_no_file 使用者沒有提供任何檔案上傳 上傳後處理的具體例子:
複製****如下:
函式: move_uploaded_file 移動上傳的臨時檔案到指定的目錄下 例子: move_uploaded_file('臨時檔名','指定檔案路徑')
is_uploaded_file 判斷是否是通過http post上傳的檔案 例子:
複製****如下:
if(!is_uploaded_file($_files['f']['tmp_name']))
3.相關引數
php上傳設計到的php.ini中的引數: file_uploads 是否允許上傳檔案,預設on
upload_tmp_dir 上傳檔案防止的臨時目錄,未指定則使用系統預設位置
upload_max_filesize 允許上傳檔案的大小的最大值,預設為2m
post_max_size 控制採用post方法進行一次表單提交中php所能接受的最大資料量,如果希望用php檔案上傳,則此值要改為比upload_max_filesize要大
max_input_time 以秒為單位對通過post/get/put方式接受資料時間進行限制。
memory_limit 為了避免正在執行的指令碼大量使用系統記憶體,php允許定義記憶體使用限額。通過設定此引數來制定單個指令碼程式可以使用的最大記憶體容量,應適當大於post_max_size值
max_execution_time 用來設定在強制終止指令碼前php等待指令碼執行完畢的時間,單位秒。次選項可限制死迴圈指令碼,但當存在乙個長時間的合法活動時(如:上傳大檔案),這項功能也會導致操作失敗。這樣情況下必須考慮將此變數增加。
4.考慮多檔案上傳可以利用$_files陣列就可以輕鬆實現多檔案上傳。$_files陣列可以獲取客戶端表單裡面所有的file域內容,從而獲得所有在同一表單上傳的檔案。
5.突破上傳的記憶體限制
方法一: 修改php.ini中memory_limit值,改為更大,如 64m 方法二: 使用apache rewrite方法,動態修改memory_limit的值。首先建立乙個.htaccess檔案,儲存在上傳檔案程式的 當前目錄即可.**如下: php_value memory_limit 100m php_value post_max_size 30m php_value upload_max_filesize 30m php_value max_execution_time 300 php_value max_input_tim 300 php_value display_errors on
實現php檔案上傳
php上傳檔案非常簡單,你需要乙個上傳的html檔案 以上範例中的 url 應該被換掉,指向乙個真實的 php 檔案。max file size 隱藏字段 單位為位元組 必須放在檔案輸入字段之前,其值為接收檔案的最大尺寸。這是對瀏覽器的乙個建議,php 也會檢查此項。在瀏覽器端可以簡單繞過此設定,因...
PHP上傳檔案實現
實現 見下。upload.html upload.php uploaddir files 設定檔案儲存目錄 注意包含 type array jpg gif bmp jpeg png 設定允許上傳檔案的型別 獲取檔案字尾名函式 function fileext filename 生成隨機檔名函式 fu...
php實現檔案上傳
前台是使用form表單,後台使用php實現上傳檔案 html部分 檔案上傳title charset utf 8 head action fileupload.php method post enctype multipart form data for file 上傳檔案label type fi...