一、使用filesize()函數獲取文件大小信息
在PHP中可以使用filesize()函數來獲取指定文件的大小,該函數的語法如下所示:
/** * 獲取文件大小 * @param string $filename 文件名稱(包含路徑) * @return int 文件大小或者在出現錯誤時返回FALSE **/ filesize(string $filename) : int|false
該函數的參數是要獲取大小的文件名(包含路徑),函數的返回值是文件大小,單位是位元組(byte),如果出現錯誤則返回false。
使用該函數獲取文件大小信息的示例代碼如下:
$filename = 'path/to/file.txt'; $filesize = filesize($filename); echo "文件".$filename."的大小是".$filesize."位元組";
二、使用filesize()函數獲取遠程文件大小信息
filesize()函數不僅可以獲取本地文件的大小信息,還可以獲取遠程文件的大小信息。要獲取遠程文件的大小,只需要將文件的URL作為函數的參數即可。示例代碼如下:
$url = 'http://www.example.com/path/to/file.txt'; $filesize = filesize($url); echo "文件".$url."的大小是".$filesize."位元組";
需要注意的是,如果要獲取的遠程文件是通過HTTP協議傳輸的,則需要在PHP環境中開啟allow_url_fopen選項,否則會報出”failed to open stream: operation failed”的錯誤。
示例代碼可參考下面的代碼:
ini_set('allow_url_fopen', 'On'); $url = 'http://www.example.com/path/to/file.txt'; $filesize = filesize($url); echo "文件".$url."的大小是".$filesize."位元組";
三、將文件大小轉換為可讀性更好的格式
filesize()函數返回的是文件大小,單位是位元組。但是,用戶更習慣使用KB、MB或GB等更具有可讀性的單位表示文件大小。為了滿足用戶的需求,PHP提供了一種將文件大小轉換為更易讀的格式的方法,代碼如下:
/** * 將位元組數轉換為更可讀的格式 * @param int $filesize 文件大小,單位是位元組 * @param int $precision 可選參數,規定小數點後保留幾位。默認為2位。 * @return string 可讀的文件大小,如1.20kB、3.45MB、2.00GB等。 **/ function formatFilesize(int $filesize, int $precision = 2) : string { $units = array('B', 'KB', 'MB', 'GB', 'TB'); $i = 0; while ($filesize >= 1024 && $i < 4) { $filesize /= 1024; $i++; } $filesize = round($filesize, $precision); return $filesize.$units[$i]; } // 單位自動適配,是1024,而不是1000
該函數的第一個參數是文件大小,單位是位元組;第二個參數是可選的,用於指定小數點後保留幾位。該函數將文件大小按照1024位元組劃分為不同的單位(如B、KB、MB等),再將文件大小進行四捨五入處理,最後返回一個字元串表示的可讀的文件大小。示例代碼如下:
$filesize = filesize('path/to/file.txt'); $filesize = formatFilesize($filesize); echo "文件大小為:".$filesize;
四、其他注意事項
在使用filesize()函數獲取文件大小時,需要注意一些問題:
如果該文件不存在,則返回false。
對於某些不支持文件指針的操作系統,filesize()函數無法獲取超過2G的文件大小。
如果要獲取的文件是一個目錄,則返回false。
使用PHP的filesize()函數獲取文件大小,並不是最好的方法。更好的方法是使用操作系統提供的stat()或fstat()函數。但是,這些方法需要對文件進行比較底層的處理,因此對於初學者來說使用filesize()函數還是比較方便的。
參考文獻:
原創文章,作者:KHRW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/135649.html