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如何判斷上傳多個文件的類型及大小等信息
<?php
if (isset($_FILES['upload']['name']))
{
$fcount = count($_FILES['upload']['name']);
for ($i = 0; $i < $fcount; $i++)
{
$fname = $_FILES['upload']['name'][$i];
$path_parts = pathinfo($fname);
if (strtolower($path_parts['extension']) != 'ppt')
{
echo $_FILES['upload']['name'][$i] . ' 不是ppt文件. <br />' ;
}
}
for ($i = 0; $i < $fcount; $i++)
{
$fsize = (int)$_FILES['uplode']['size'][$i];
if ($fsize > 2048576)
{
echo '文件超過指定的大小: ' . $_FILES['upload']['name'][$i] . ":" . $fsize . '<br />';
}
}
for ($i = 0; $i < $fcount; $i++)
{
$ferror = $_FILES['uplode']['error'][$i];
if ($ferror)
{
echo '文件上傳錯誤: ' . $_FILES['upload']['name'][$i] . ":" . $ferror. '<br />';
}
}
} else
{
echo '上傳文件不正確.';
}
?>
㈢ php檢測某目錄是否有超過20MB的文件
如果php實現的話,就遍歷目錄,判斷是否是文件,filesize獲取文件大小,比較即可:
<?php
$path=".";//.是當前目錄,你可以換成你的目錄
foreach(scandir($path)as$v){
if(!is_dir($v)){//如果不是目錄,就是文件了
$size=filesize($v);
if($size>20971520){//20971520==20M
echo$v."#".$size."<br>";;
}
}
}
?>
㈣ php判斷文件大小
$filesize=abs(filesize($filename));
if($filesize<5120){ //小於5K
//執行代碼
}else{ //大於5K
//執行代碼
}
函數filesize()返回的是以位元組為單位的文件大小。參數是文件名
㈤ PHP怎麼獲取文件大小
filesize
(PHP 4, PHP 5)
filesize — 取得文件大小
說明
int filesize ( string $filename )
返迴文件大小的位元組數,如果出錯返回 FALSE 並生成一條 E_WARNING 級的錯誤。
Note: 因為 PHP 的整數類型是有符號的,並且大多數平台使用 32 位整數,filesize() 函數在碰到大於 2GB 的文件時可能會返回非預期的結果。對於 2GB 到 4GB 之間的文件通常可以使用 sprintf("%u", filesize($file)) 來克服此問題。
Note: 此函數的結果會被緩存。參見 clearstatcache() 以獲得更多細節。
Tip
自 PHP 5.0.0 起, 此函數也用於某些 URL 包裝器。請參見 Supported Protocols and Wrappers以獲得支持 stat() 系列函數功能的包裝器列表。
Example #1 filesize() 例子
<?php
// 輸出類似:somefile.txt: 1024 bytes
$filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';
?>
參見 file_exists()。
㈥ 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];
}