檔案上傳大小限制

2021-08-20 00:19:30 字數 3176 閱讀 7642

修改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...