當前位置:ag真人国际官网-ag旗舰厅官方网站 » 編程語言 » php設置文件大小

php設置文件大小-ag真人国际官网

發布時間: 2024-11-08 09:36:37

a. 怎麼用php實現文件的上傳,要求文件類型為jpg,大小不超過2m,上傳的文件存放在u

$_files官方文檔

你可以看看官方的$_files文檔,裡面有對$_files的內容的解釋。

想通過php來處理文件信息就得通過$_files的內容來處理,比如文件類型可以用type來判斷,要求文件類型為jpg,那就判斷if ($_files['file1']['type'] === 'image/jpeg'),這里的file1並不是絕對的,視情況而定。

當然如果你覺得判斷類型太麻煩,你也可以直接從name中判斷後綴名,自己將文件名分割一下就好了。大小可以用size,默認單位是位元組,不超過2m就要除以1024*1024了,可以將位元組轉換到兆位元組。

要將上傳的文件放在u目錄下,就用move_uploaded_file函數來解決,move_uploaded_file官方文檔

b. phpstudy修改上傳文件限制大小限制的方法

越來越多的童鞋在使用phpstudy來搭建網站, ,phpstudy搭建php mysql的網站還是非常不錯的,主要就是可以隨意切換php版本,但是不少童鞋在用php程序上傳文件時候,默認限制的只能上傳2m大小的文件,在這里說下如何修改這個上傳限制大小。
總共修改三個地方
post_max_size
  max_execution_time
  max_input_time
下圖所示

打開修改這三個裡面的值,不知道修改成多少的,直接在原有數字後面加個0即可,一般夠用了

c. 用php寫上傳資源的代碼是上傳大文件,例如300m的文件,再不改php.ini設置的情況下,有沒有一種用代碼修改

可以,利用php裡面的函數ini_set(),ini_set參數格式為ini_set($var,$value),$var是你要設置的配置選項,$value是你要修改的值。

d. 如何設置apache php的上傳文件大小上限

完整修改步驟:
1.修改apache設置
在httpd.conf 加一句(隨便加哪都行) limitrequestbody 10240000(這個數字多大都可以,我設的上限是10m)
2.修改php設置
相關的設置有如下幾個,但是我只改了其中的post_max_size

(下面的內容是直接粘第一篇文章里的)
打開php.ini, ctrl f 找到下面的項並修改之。下面以上傳100m為例。
file_uploads = on ;是否允許通過http上傳文件的開關。默認為on即是開
upload_tmp_dir ;文件上傳至伺服器上存儲臨時文件的地方,如果沒指定就會用系統默認的臨時文件夾
upload_max_filesize = 100m ;望文生意,即允許上傳文件大小的最大值。默認為2m
post_max_size = 100m ;指通過表單post給php的所能接收的最大值,包括表單里的所有值。默認為8m
一般地,設置好上述四個參數後,上傳<=8m的文件是不成問題,在網路正常的情況下。
但如果要上傳>8m的大體積文件,只設置上述四項還一定能行的通。除非你的網路真有100m/s的上傳高速,否則你還得關心關心下面的參數:
max_execution_time = 600 ;每個php頁面運行的最大時間值(秒),默認30秒
max_input_time = 600 ;每個php頁面接收數據所需的最大時間,默認60秒
memory_limit = 128m ;每個php頁面所吃掉的最大內存,默認8m
希望可以採納,謝謝。

e. 如何修改php上傳文件大小限制

1. 在php.ini中,做如下修改:
file_uploads = on
upload_tmp_dir = /home/upload
upload_max_filesize = 4000m
post_max_size = 4000m
一般地,設置好上述四個參數後,上傳<=8m的文件是不成問題,在網路正常的情況下。
但如果要上傳>8m的大體積文件,只設置上述四項還一定能行的通。除非你的網路真有100m/s的上傳高速,否則你還得關心關心下面的參數:
max_execution_time = 600
max_input_time = 600
memory_limit = 128m

2. 在要確認上傳的

里加入以下行:

3. $_files["userfile"]["error"]返回值說明:
$_files['teacher_pic']['error'] = 1 文件大小超過了php.ini中的文件限制
$_files['teacher_pic']['error'] = 2 文件大小超過了瀏覽器限制
$_files['teacher_pic']['error'] = 3 文件部分被上傳
$_files['teacher_pic']['error'] = 4 沒有找到要上傳的文件
$_files['teacher_pic']['error'] = 5 伺服器臨時文件夾丟失
$_files['teacher_pic']['error'] = 6 文件寫入到臨時文件夾出錯
$_files['teacher_pic']['error'] = -1 末充許的類型
$_files['teacher_pic']['error'] = -2 文件過大,上傳文件不能超過{$this->maxsize}個位元組
$_files['teacher_pic']['error'] = -3 上傳失敗
$_files['teacher_pic']['error'] = -4 建立存放上傳文件目錄失敗,請重新指定上傳目錄
$_files['teacher_pic']['error'] = -5 必須指定上傳文件的路徑

f. php上傳問題 在上傳不成功的情況下,當上傳文件大於10m(大概數)時就會報錯,而不是根據程序提示,

你說的10m應該是php.ini里設置的上傳文件大小限制,而你這個switch判斷是基於表單上傳文件大小來判斷的,兩者毫無相關!
一、超過10m,在php底層處理請求時就直接報錯了,根本執行不到你switch的地方,所以報錯是非預期的
二、超過2m,php能正常執行,所以會按照你switch來報錯

這里,你要搞清楚php的上傳文件大小限制跟form表單上傳文件大小限制的關系

g. php文件上傳失敗的問題

在用php進行文件上傳的操作中,需要知道怎麼控制上傳文件大小的設置,而文件可傳大小是受到多種因素制約的,現總結如下:
1、php.ini:upload_max_filesize 所上傳的文件的最大大小。默認值2m。

2、php.ini:memory_limit 本指令設定了一個腳本所能夠申請到的最大內存位元組數,默認值8m。如果不需要任何內存上的限制,必須將其設為 -1。如果內存不夠,則可能出現錯誤:fatal error: allowed memory size of x bytes exhausted (tried to allocate y bytes)
3、php.ini:post_max_size 設定post數據所允許的最大大小。此設定也影響到文件上傳。要上傳大文件,該值必須大於 upload_max_filesize。
4、php.ini:max_execution_time = 30 ; maximum execution time of each script, in seconds
5、php.ini:max_input_time = 60 ; maximum amount of time each script may spend parsing request data
6、如果用到mysql的blob進行二進制文件存儲,則需要設置my.ini:max_allowed_packet=xxm

7、httpd.conf
在 apache 裡面有一個選項是 limitrequestbody,這個選項可以限制用戶送出的 http 請求內容。這個選項可以在 .htaccess 或 httpd.conf 里使用,而如果在 httpd.conf 內使用,分別可以用在 virtualhost 或目錄屬性設定。而 limitrequestbody 的設定值是介乎 0 (無限制) 至 2147483647 (2gb)。
例如要在目錄 d:/appserv/www 設定上傳限制為 100k,可以在 .htaccess 或 httpd.conf 加入以下語句:
limitrequestbody 1024000000
options indexes followsymlinks multiviews execcgi
allowoverride all
order allow,deny
allow from all
limitrequestbody 1024000000options indexes followsymlinks multiviews execcgiallowoverride allorder allow,denyallow from all
如果透過 .htaccess 設定,儲存檔案後會立即生效;如透過 httpd.conf 設定,須要重新啟動 apache。
php關於文件上傳部分,特別提到表單隱藏域:max_file_size,意思是接收文件的最大尺寸。文檔中給出的例子如下:


send this file:

form>
send this file:
這里設置max_file_size = 30000,期待一種可能,使得瀏覽器在傳送文件之前能夠依此作出預先判斷,如果文件尺寸大於30000位元組,則不執行實際的post動作。也就是不往伺服器發送文件內容,而是直接在客戶端提醒用戶「你試圖上傳的文件超過30000位元組」。
這的確是一個非常棒的主張,但在現實中卻暫時無法實現。不是因為這個限制可以「被簡單地繞過」,而是ie和firefox這兩個主流瀏覽器都不支持這個特性。php的這個建議尚未被採納。
max_file_size還有一個用場:後台php會判斷接收到的文件大小是否大於這個值,如果超出,$_files[『thisfile』][『error』]會被設置為upload_err_form_size(2),同時放棄保存臨時文件,將$_files[『thisfile』][『size』]置0。
這個例子,沒問題,表現正常,當我試圖上傳一個40多k的文件時,php程序報告「文件超過max_file_size」。
但是,如果我們將表單中的max_file_size從30000減少到1000,情形又如何呢?
上傳800位元組的文件,正常;
上傳40k的文件,php報告文件過大,也正常;
上傳3000個位元組的文件,php未報告錯誤,它成功保存了文件!出乎意料!
問題就出在main/rfc1867.c中判斷文件是否超長的這部分代碼上。php每次從buffer中讀取fillunit位元組長度的內容後,首先判斷「已經讀到的內容長度(total_bytes)」是否大於max_file_size,然後再增加「已經讀到的內容長度(total_bytes)」。這樣一來,和預計的結果之間至多會有fillunit位元組的誤差,而fillunit=1024*5=5k。(點擊bug了解詳細內容)
這就是說,當max_file_size<5k時,上傳一個大於max_file_size,但是小於5k的文件是沒有問題的。
當然,因為這個設置很容易被繞過,所以伺服器端編程不應當依賴於max_file_size。而且,5k到底是個很小的數值,對大多數上傳文件的表單來說沒有影響。
php中post_max_size,upload_max_filesize, max_file_size的設置,和客戶端上傳給伺服器端的流量大小無關。
apache伺服器從客戶端接收長度不超過limitrequestbody位元組數的請求,然後傳送給php模塊,php模塊再決定是否保存成臨時文件,設置$_files全局變數,移交給script進一步處理。
這個apache的limitrequestbody選項預設值=0,允許request body的最大位元組數是2g(linux apache)
最後還要注意的是:
html本身能夠post數據也是有限制的,不能超過2g。
ftp客戶端有文件偏移指針的2gb邊界限制,未使用特殊編譯flag編譯的ftp伺服器端或者客戶端,無論在什麼fs中都不支持大於2gb的文件。不知道php會不會也有這種情況。

h. 如何通過配置php文件限制上傳文件的大小

在網站開發的過程中,為了確保能夠充分利用伺服器的空間,在開發上傳功能時,必須對上傳文件的大小進行控制。那麼我們如何進行對上傳文件的大小進行控制呢?

控制文件的大小可以從兩個方面入手:

第一個是在php的配置文件php.ini中對上傳文件進行控制,如果上傳文件超過它指定的范圍,那麼執行上傳就會識別。

第二個是在php配置文件允許的范圍內,在程序中對上傳文件的大小進行控制!

一:通過配置文件控制上傳文件

php中通過php.ini文件對上傳文件進行控制,包括是否支持上傳,上傳文件的臨時文件目錄,上傳文件的大小,指令執行時間,指令分配的內存空間。

在php.ini中,定義 file uploads項,完成對上傳相關選項的設置。上傳相關選項的含義如下:

file_uploads:如果值是 no,說明伺服器支持上傳文件,如果為off ,那麼則不支持。一般默認是支持的,這個不用修改!

upload_tmp_dri:上傳文件臨時目錄。文件被成功上傳之前,文件首先存放到伺服器端的臨時目錄中。多數使用系統默認目錄,但是也可以自行設置!

upload_max_filesize:伺服器允許上傳文件的最大值,以mb為單位,系統默認為2mb,如果網站需要上傳超過2mb的數據,那麼就要修改這個值!

上述是php.ini中 file_uploads項中與上述相關參數設置說明,除了file_uploads項中的內容外,在php.ini中還有其他幾個選項會影響到文件的上傳~

max_execution_time:php中一個指令所能執行的最大時間,單位為秒。該選項在上傳超大文件時必須要修改,否則即使上傳文件在伺服器允許的范圍內,但是若超過了指令所能執行的最大時間,仍然無法實現上傳~

memory_limit:php中一個指令所分配的內存空間,單位是 mb 。它的大小同樣會影響得到超大文件的上傳!

二:在程序中控制上傳文件

在客戶端控制上傳文件應用的是 form 表單中的 enctype 和 method屬性以及隱藏域 max_file_size。

enctype = 「multipart/form-data」:指定表單編碼數據方式。

method = 「post」:指定數據的傳輸方式。

:通過隱藏域控制上傳文件的大小(單位為位元組),該值不能超過php.ini配置文件中 upload_max_filesize 選項設置的值,它不能喝完全控制上傳文件的大小。只是可以避免一些不必要的麻煩。

技巧:

在應用隱藏域控制文件上傳大小時,必須將其放置在文件域之前,否則是不能發揮作用的!

熱點內容
發布:2024-11-19 10:23:05 瀏覽:875
接龍源碼 發布:2024-11-19 10:14:48 瀏覽:33
驅動軟體哪個安卓版好 發布:2024-11-19 10:08:28 瀏覽:703
伺服器一鍵搭建java環境 發布:2024-11-19 10:08:27 瀏覽:729
布丁少兒編程 發布:2024-11-19 09:57:11 瀏覽:98
vb資料庫數組 發布:2024-11-19 09:23:40 瀏覽:828
安卓游戲數據保存在哪裡找 發布:2024-11-19 09:22:02 瀏覽:310
解壓出來的文件亂碼 發布:2024-11-19 09:15:40 瀏覽:940
北航ftp是多少 發布:2024-11-19 09:15:32 瀏覽:822
瀏覽保存密碼如何取消 發布:2024-11-19 09:10:17 瀏覽:90
网站地图