當前位置:首頁 » 編程語言 » php獲取文件大小

php獲取文件大小

發布時間: 2022-06-11 10:53:24

php 讀取zip包的大小

functionget_zip_originalsize($filename){
$size=0;
$resource=zip_open($filename);
while($dir_resource=zip_read($resource)){
$size+=zip_entry_filesize($dir_resource);}
zip_close($resource);return$size;}
$size=get_zip_originalsize('file.zip');
echo"originalsize:$sizebytes ";

㈡ php判斷文件大小

$filesize=abs(filesize($filename));
if($filesize<5120){ //小於5K
//執行代碼
}else{ //大於5K
//執行代碼
}
函數filesize()返回的是以位元組為單位的文件大小。參數是文件名

㈢ php 如何獲取文件大小

filesize() 返迴文件大小的位元組數,如果出錯返回 FALSE 並生成一條 E_WARNING 級的錯誤。

㈣ 如何用PHP獲取遠程大文件的大小

1、用file_get_contents或者fopen、file、readfile等函數讀取url的時候,會創建一個名為$http_response_header的變數來保存http響應的報頭.
示例代碼一:
[php]viewplain<?php$url='http://www..com';$html=file_get_contents($url);print_r($http_response_header);//輸出結果Array([0]=>HTTP/1.1200OK[1]=>Date:Tue,06Nov201208:51:01GMT[2]=>Server:BWS/1.0[3]=>Content-Length:9803[4]=>Content-Type:text/html;charset=gbk[5]=>Cache-Control:private[6]=>Expires:Tue,06Nov201208:51:01GMT[7]=>Set-Cookie:BAIDUID=:FG=1;expires=Tue,06-Nov-4208:51:01GMT;path=/;domain=..com[8]=>P3P:CP="OTIDSPCORIVAOURINDCOM"[9]=>Connection:Close)?>2、使用fopen等函數打開的數據流信息可以用stream_get_meta_data來獲取。示例代碼二:[php]viewplain<?php$fp=fopen($url,'r');print_r(stream_get_meta_data($fp));fclose($fp);//輸出結果Array([wrapper_data]=>Array([0]=>HTTP/1.1200OK[1]=>Date:Tue,06Nov201208:54:22GMT[2]=>Server:BWS/1.0[3]=>Content-Length:9803[4]=>Content-Type:text/html;charset=gbk[5]=>Cache-Control:private[6]=>Expires:Tue,06Nov201208:54:22GMT[7]=>Set-Cookie:BAIDUID=:FG=1;expires=Tue,06-Nov-4208:54:22GMT;path=/;domain=..com[8]=>P3P:CP="OTIDSPCORIVAOURINDCOM"[9]=>Connection:Close)[wrapper_type]=>http[stream_type]=>tcp_socket[mode]=>r[unread_bytes]=>0[seekable]=>[uri]=>http://www..com[timed_out]=>[blocked]=>1[eof]=>)?>3、get_headers()也可以獲取請求url的響應報文。示例代碼三:[html]viewplain<?phpprint_r(get_headers($url));Array([0]=>HTTP/1.1200OK[1]=>Date:Tue,06Nov201208:58:41GMT[2]=>Server:BWS/1.0[3]=>Content-Length:9803[4]=>Content-Type:text/html;charset=gbk[5]=>Cache-Control:private[6]=>Expires:Tue,06Nov201208:58:41GMT[7]=>Set-Cookie:BAIDUID=:FG=1;expires=Tue,06-Nov-4208:58:41GMT;path=/;domain=..com[8]=>P3P:CP="OTIDSPCORIVAOURINDCOM"[9]=>Connection:Close)?>4、php5中新增的參數context使這些函數更加靈活,通過它我們可以定製http請求,甚至post數據。

㈤ PHP獲取指定路徑文件大小

filesize() 函數返回指定文件的大小。

若成功,則返迴文件大小的位元組數。若失敗,則返回 false 並生成一條 E_WARNING 級的錯誤。
語法
filesize(filename)

參數 描述

filename 必需。規定要檢查的文件。

提示:本函數的結果會被緩存。請使用 clearstatcache() 來清除緩存。

例子
<?php
echo 'test.txt文件的大小為:' , filesize("test.txt");
?>

輸出:
test.txt文件的大小為:20

㈥ 如何獲得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。

㈦ 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獲取遠程文件大小的方法,分享給大家供大家參考。具體實現方法如下:
/*
**功能:獲取遠程文件的大小,返回值的單位是:位元組
*/
function
get_fileSize($url){
if(!isset($url)||trim($url)==''){
return
'';
}
ob_start();
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_NOBODY,1);
$okay=curl_exec($ch);
curl_close($ch);
$head=ob_get_contents();
ob_end_clean();
$regex='/Content-Length:\s([0-9].+?)\s/';
$count=preg_match($regex,$head,$matches);
return
isset($matches[1])&&is_numeric($matches[1])?$matches[1]:'';
}
希望本文所述對大家的php程序設計有所幫助,大家能夠喜歡小便的文章,大家共同進步。

㈨ php如何檢測某文件夾里的各個文件夾大小

可以使用scandir()和filesize()函數實現:

$path=".";//.是當前目錄,你可以換成自己的目錄地址
foreach(scandir($path)as$v){
if(!is_dir($v)){//如果不是目錄,就是文件了
$size=filesize($v);
echo"文件:".$v."大小:".byte_format($size)."<br>";//單位是kb
}
}

//格式化函數
functionbyte_format($size,$dec=2){
$a=array("B","KB","MB","GB","TB","PB");
$pos=0;
while($size>=1024){
$size/=1024;
$pos++;
}
returnround($size,$dec)."".$a[$pos];
}

㈩ php 伺服器限制了上傳大小1M 那能不能獲取大於一兆的文件大小

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

熱點內容
安卓輸入法哪個詞庫好 發布:2025-02-08 00:03:47 瀏覽:90
c存儲過程數據集 發布:2025-02-08 00:03:42 瀏覽:924
qq卡的密碼在哪裡找 發布:2025-02-07 23:59:32 瀏覽:964
安卓為什麼注冊不了lysn 發布:2025-02-07 23:55:36 瀏覽:93
十個字母無壓縮 發布:2025-02-07 23:54:51 瀏覽:380
java惡作劇小程序 發布:2025-02-07 23:53:48 瀏覽:671
openvas源碼 發布:2025-02-07 23:48:14 瀏覽:318
面java 發布:2025-02-07 23:36:21 瀏覽:617
編譯原理練習題第三章答案 發布:2025-02-07 23:35:05 瀏覽:752
爐石寫腳本 發布:2025-02-07 23:31:24 瀏覽:985