修改php上傳檔案大小限制的方法
1. 一般的檔案上傳,除非檔案很小.就像乙個5m的檔案,很可能要超過一分鐘才能上傳完.
但在php中,預設的該頁最久執行時間為 30 秒.就是說超過30秒,該指令碼就停止執行.
這就導致出現 無法開啟網頁的情況.這時我們可以修改 max_execution_time
在php.ini裡查詢
max_execution_time
預設是30秒.改為
max_execution_time = 0
0表示沒有限制
2. 修改 post_max_size 設定 post 資料所允許的最大大小。此設定也影響到檔案上傳。
php預設的post_max_size 為2m.如果 post 資料尺寸大於 post_max_size $_post 和 $_files superglobals 便會為空.
查詢 post_max_size .改為
post_max_size = 150m
3. 很多人都會改了第二步.但上傳檔案時最大仍然為 8m.
為什麼呢.我們還要改乙個引數upload_max_filesize 表示所上傳的檔案的最大大小。
查詢upload_max_filesize,預設為8m改為
upload_max_filesize = 100m
另外要說明的是,post_max_size 大於 upload_max_filesize 為佳.
4.上傳報413錯誤,
開啟nginx主配置檔案nginx.conf,找到http{}段,修改或者新增 client_max_body_size 的值
client_max_body_size 20m;
檔案上傳其它:
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
檔案上傳大小限制
對於asp.net,預設只允許上傳4m檔案,增加如下配置,一般可以自定義最大檔案大小.executiontimeout 800 maxrequestlength 40960 usefullyqualifiedredirecturl false executiontimeout預設是 90 秒,你要改...
檔案上傳操作大小限制之我見
這個方法能儘量減少伺服器上傳檔案操作的負擔,雖然不能在上傳前就給於判斷大小。1.給自己的檔案設定2個值 型別試情況而定 size1 乙個表示允許上傳的檔案大小 4 1024 1024 4m size2 乙個表示允許寫入的流大小 如 5 1024 1024 5m 2.然後再在輸出流迴圈中設定乙個最多迴...
PHP上傳檔案大小限制
歸納了一下上傳檔案大小通常需要設定的地方 1 php.ini配置檔案 設定最大上傳檔案大小 預設為20m php upload max filesize 10m post max size 10m memory limit 20m upload max filesize 10m post max s...