導航:首頁 > 編程語言 > php上傳截斷

php上傳截斷

發布時間:2022-08-29 03:25:18

1. 為什麼用php對上傳圖片進行裁剪的時候,沒成功,而且連上傳的原圖都沒了

加個base64_decode方法試試:
$src = imagecreatefromstring(base64_decode(file_get_contents($src_path)));

2. 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會不會也有這種情況。

3. 求PHP 超大文件上傳解決方案:分片斷點上傳(一)

大文件上傳主要需要解決2個難點問題。
一個是文件的分片,一個是文件的合成。
也就是客戶端分片上傳,伺服器端量分片的文件進行合成。
文件分片,前端瀏覽器提供了分片的js函數,我們只需要調用即可。
文件上傳需要解決斷點續傳的問題,就是伺服器端需要保留和記錄每次上傳的分片,這樣可以通過順序進行文件合並。
斷點續傳是通過記錄上傳的信息,已上傳的切片不需要重復上傳,當全部切片上傳成功,伺服器端進行切片合並。

4. PHP指字元數量截斷,在後面加上省略號。

substr可以截斷字元串,但是不能顯示省略號,用 Smarty 的的 truncate 方法可以把頁面的字元串截斷並顯示省略號。

5. PHP 斷點上傳超大文件,合並文件時內存溢出,怎麼處理

後台腳本佔用的內存是有個上限的,不是你想用多少就有多少的。

你把文件數據用追加的方式寫入文件,而不是把所有數據拼接為字元串再一次性寫入文件,就不會造成內存溢出了:

file_put_contents('文件路徑', '要寫入的數據', FILE_APPEND);

6. php 上傳圖片,自動按比例只求寬裁剪,請問怎麼做呢

我只能提供步驟和思路,不要想直接拿代碼。。。
第一步:判斷圖片寬高,關鍵函數getimagesize($fullpath);如果超過寬度限制,根據當前寬高比例,算出壓縮後圖片正確的寬高。一點小演算法即可。
第二步:把當前圖片復制一份,關鍵函數imagecreatefromjpeg()等,根據圖片類型(後綴)不同,函數也稍有區別。
第三步:把剛才復制的備用文件壓縮,關鍵函數ImageCopyResampled或者ImageCopyResized 根據php版本和擴展不同選擇
第四步:把生成的縮略圖保存成文件,ImageJPEG等相應函數
完成

7. php網頁被截斷怎麼辦

答案補充(自己研究下吧 你的換行問題已解決):
<?php
$a ="哈哈哈
哈哈哈
呵呵
嘿嘿";
echo $a;
echo "<hr />";
$a=str_replace(chr(10),"",$a);
$a=str_replace(chr(13),"",$a);
echo $a;
?>

8. 如何截斷上傳文件中的的php文件

截斷類型:php %00截斷
截斷條件:
php版本小於5.3.4 詳情關注CVE-2006-7243
php的magic_quotes_gpc為OFF狀態

9. PHP 大文件上傳,支持斷點續傳,求具體方案、源碼或者文件上傳插件

HTTP協議里, 對斷點下載有支持.
斷點上傳單純靠PHP 是做不了的.
因為普通的瀏覽器端沒那功能.(上傳的時候 還是會整個文件編碼發送)
想實現的話 , 客戶端需要插件了,
客戶端可以使用flex實現. 服務端, PHP可以寫個webservice 接受文件.

10. php 如何判斷「請求被截斷」

方法2:getInput(String input),可以轉化為代碼request.getParmater(「input」),
由於字元串中包含了『&』字元,直接用postman進行投遞時候,字元串會攔斷【request.getParamater會以&截斷參數】。因此不能直接投遞。可以將input的json字元串url enode後投遞。
第二種方式,就是在postman中header中設置
key:content-type
value:application/json
在Body中設置json數據
然後在代碼中指明接受為requestBody

參考一下

閱讀全文

與php上傳截斷相關的資料

熱點內容
去哪裡找按摩師很漂亮的app 瀏覽:818
86x99用簡便演算法計算 瀏覽:829
php截圖flash 瀏覽:272
卸載聯想app哪個好 瀏覽:719
php文字轉圖片 瀏覽:329
豆客後台怎麼加密碼 瀏覽:574
jpg轉換pdf破解版 瀏覽:978
php基礎書籍推薦 瀏覽:777
伺服器與外網不通如何驗證 瀏覽:351
電子版是不是就是文件夾 瀏覽:50
游戲屬性文件加密 瀏覽:462
如何讓安卓手機桌面圖標下移 瀏覽:529
ubuntuphp5環境搭建 瀏覽:100
賭癮解壓視頻 瀏覽:917
晉城移動dns伺服器地址 瀏覽:296
php開源文庫系統 瀏覽:136
android記事本源碼 瀏覽:407
安卓11小游戲怎麼玩法 瀏覽:190
gif有損壓縮 瀏覽:937
windows下安裝linux命令操作 瀏覽:844