當前位置:首頁 » 文件管理 » php文件上傳限制

php文件上傳限制

發布時間: 2024-10-28 06:07:42

php上傳文件的方法有多少種

一、傳統的php寫的上傳類。
寫一個php的上傳類,這個方法用到的知識全部是php的,而且技術的難點也不多。
<form method="post" action="upload.php" enctype="multipart/form-data">
<table border=0 cellspacing=0 cellpadding=0 align=center width="100%">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">//隱藏域。這里name必須設置成MAX_FILE_SIZE,其值就是上傳文件的最大長度,單位是B,這里我限製成2M
<input name="file" type="file" value="瀏覽" >
< input type="submit" value="上傳" name="B1">
</table>
</form>

服務端利用php的$_FILES['file']['name']來獲取文件後綴名,具體的代碼自己查找資料看看,這里就不多說了。
總結;這個方法可以用來上傳小於2M的文件或者是圖片,基本的功能可以實現。
二、利用uploadify插件
這個是利用jQuery的上傳插件,上傳可以帶進度條,容易配置。
總結:可以上傳一些大文件,和圖片,而且帶進度條,可以多文件上傳,在WEB中會經常用。
三、利用網路的webupload
WebUploader 是由 Bai FEX 團隊開發的一款以 HTML5 為主,FLASH 為輔的現代文件上傳組件。在現代的瀏覽器裡面能充分發揮 HTML5 的優勢,同時又不摒棄主流IE瀏覽器,沿用原來的 FLASH 運行時,兼容 IE6+,iOS 6+, Android 4+。採用大文件分片並發上傳,極大的提高了文件上傳效率。
四、swfupload的插件

這是一個jquery的上傳插件,功能也非常強大,開發也比較容易,網上有很多的資料,可以自行查找。

㈡ 如何取消php最大上傳文件限制

一、修改php.ini文件。
1、查找post_max_size,指通過表單POST給PHP的所能接收的最大值,包括表單里的所有值,默認為8M,看你自己需要進行改變。
2、查找File Uploads,首先確認file_uploads = on ;是否允許通過HTTP上傳文件的開關,默認為ON即是開。 upload_tmp_dir ;
查找upload_max_filesize ;即允許上傳文件大小的最大值。默認為2M。
3、如果要上傳>8M的文件,那麼只設置上述四項還不定一定可以。最好對下面的參數也進行設置:
查找max_execution_time = 600 ;每個PHP頁面運行的最大時間值(秒),默認30秒。
max_input_time = 600 ;每個PHP頁面接收數據所需的最大時間,默認60秒 。
memory_limit = 8M ;每個PHP頁面所吃掉的最大內存,默認8M。

㈢ 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,意思是接收文件的最大尺寸。文檔中給出的例子如下:
<form enctype=」multipart/form-data」 action=」_URL_」 method=」POST」>
<input type=」hidden」 name=」MAX_FILE_SIZE」 value=」30000″>
Send this file: <input name=」userfile」 type=」file」>
<input type=」submit」 value=」Send 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會不會也有這種情況。

㈣ 如果頁面提示不能上傳php文件那麼使用擴展名繞過方式上傳文件的話下列哪種方+

如果網頁限制了上傳PHP文件,可以嘗試使用以下方式繞過該限制上傳PHP文件:
1. 使用雙擴展名 - shell.php.jpg
伺服器可能只檢查第一個擴展名,這個可以上傳PHP文件並重命名為PHP執行。
2.使用空白符 - shell.php%20.jpg
一些伺服器過濾規則可能會忽略空白符,導致繞過。
3.使用大寫擴展名 - shell.PHP
有的伺服器僅檢查小寫擴展名。
4.使用特殊編碼 - shell.php%00.jpg
一些過濾器可能會忽略空字元00,從而可繞過。
5.使用條件注釋 - shell.php#.jpg
空格和#可能被過濾跳過而造成繞過。
6.使用特殊的雙擴展名 - shell.php.php5.jpg
一些過濾僅校驗第一個點。
7.切分文件頭和內容分開上傳
但是這些方法都依賴伺服器端的過濾規則不夠完善,從安全形度來說,伺服器端最好進行白名單驗證,而不是僅僅黑名單限制,從根本上杜絕文件上傳漏洞。
另外,作為用戶我們也不應該嘗試非法繞過上傳限制或者上傳不需要的webshell。

㈤ 如何突破php上傳文件大小限制

1. 一般的php文件上傳,除非文件很小.就像一個5M的文件,很可能要超過一分鍾才能上傳完.
但在php中,默認的該頁最久執行時間為 30 秒.就是說超過30秒,該腳本就停止執行.
這就導致出現 無法打開網頁的情況.這時我們可以修改 max_execution_time
在php.ini里查找

Java代碼

  • max_execution_time



  • 默認是30秒.改為


  • max_execution_time = 0


  • 0表示沒有限制


  • 以上修改的是php上傳文件中腳本執行超時時間



  • 2. 修改 post_max_size 設定 POST 數據所允許的最大大小。此設定也影響到php上傳文件。


  • php默認的post_max_size 為2M.如果 POST 數據尺寸大於 post_max_size $_POST 和 $_FILES superglobals 便會為空.


  • 查找 post_max_size .改為


  • Java代碼

    post_max_size=150M



  • 3. 修改了第二步,但php上傳文件時最大仍然為 8M。


  • 為什麼呢.我們還要改一個參數upload_max_filesize 表示所上傳的文件的最大大小。


  • 查找upload_max_filesize,默認為8M改為


  • Java代碼

    upload_max_filesize=100M

㈥ 如何通過配置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」:指定數據的傳輸方式。

<input type = "hidden" name="MAX_FILE_SIZE" value=「10000」/>:通過隱藏域控制上傳文件的大小(單位為位元組),該值不能超過php.ini配置文件中 upload_max_filesize 選項設置的值,它不能喝完全控制上傳文件的大小。只是可以避免一些不必要的麻煩。

技巧:

在應用隱藏域<input type = "hidden" name="MAX_FILE_SIZE" value=「10000」/>控制文件上傳大小時,必須將其放置在文件域之前,否則是不能發揮作用的!

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

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

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

熱點內容
為什麼存儲卡 發布:2024-10-28 08:26:11 瀏覽:11
ssr自動搭建腳本 發布:2024-10-28 08:20:05 瀏覽:461
加密支導線 發布:2024-10-28 07:59:55 瀏覽:854
華中存儲的總公司 發布:2024-10-28 07:47:23 瀏覽:303
上傳文件至hdfs 發布:2024-10-28 07:40:40 瀏覽:936
美版安卓手機怎麼下載 發布:2024-10-28 07:38:10 瀏覽:286
賣褲子腳本 發布:2024-10-28 07:38:10 瀏覽:218
微信公眾平台緩存 發布:2024-10-28 07:25:15 瀏覽:824
小米電腦怎麼鎖屏密碼 發布:2024-10-28 07:24:34 瀏覽:942
eNSP華為IPv6如何連接伺服器 發布:2024-10-28 06:54:51 瀏覽:557