PHP filesize 函數用於獲取文件大小。在處理文件上傳或者下載時,我們需要知道文件的大小來做出相應的處理。
一、獲取文件大小
使用 filesize 函數,獲取文件大小非常簡單:
$filesize = filesize('/path/to/file');
其中,參數 ‘/path/to/file’ 是待獲取文件大小的文件路徑,返回值 $filesize 單位為字節(Byte)。
如果想將字節數轉化為易讀的格式,我們可以使用以下函數:
function formatSizeUnits($bytes)
{
if ($bytes >= 1073741824) {
$bytes = number_format($bytes / 1073741824, 2) . ' GB';
} elseif ($bytes >= 1048576) {
$bytes = number_format($bytes / 1048576, 2) . ' MB';
} elseif ($bytes >= 1024) {
$bytes = number_format($bytes / 1024, 2) . ' KB';
} elseif ($bytes > 1) {
$bytes = $bytes . ' bytes';
} elseif ($bytes == 1) {
$bytes = $bytes . ' byte';
} else {
$bytes = '0 bytes';
}
return $bytes;
}
使用上述函數將文件大小轉化成易讀的格式:
$filesize = filesize('/path/to/file');
$formattedSize = formatSizeUnits($filesize);
echo "文件大小為 $formattedSize";
二、遍歷文件夾
有時候我們需要獲取文件夾中所有文件的大小,可以使用 PHP 中的 glob 函數,該函數可以用來獲取一個文件夾下的所有文件。
$files = glob('/path/to/folder/*');
$totalSize = 0;
foreach ($files as $file) {
if (is_file($file)) {
$totalSize += filesize($file);
}
}
$formattedSize = formatSizeUnits($totalSize);
echo "文件夾大小為 $formattedSize";
上述代碼中,我們使用了一個循環遍歷文件夾內的文件,並使用 filesize 函數獲取文件的大小,計算出文件夾的總大小。
三、判斷文件是否存在
在獲取文件大小之前,我們需要確保該文件已經存在,需要使用 file_exists 函數判斷文件是否存在:
if (file_exists('/path/to/file')) {
$filesize = filesize('/path/to/file');
$formattedSize = formatSizeUnits($filesize);
echo "文件大小為 $formattedSize";
} else {
echo "文件不存在";
}
如果判斷文件不存在,將會輸出 “文件不存在”。
四、獲取遠程文件大小
有時候,我們需要獲取遠程文件的大小,可以使用 PHP 中的 cURL 擴展庫,該庫可以用來進行 HTTP 請求。
$ch = curl_init('http://example.com/file.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
curl_exec($ch);
$filesize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
$formattedSize = formatSizeUnits($filesize);
echo "文件大小為 $formattedSize";
curl_close($ch);
上述代碼中,我們首先使用 cURL 進行 HTTP 請求,設置方法為 HTTP HEAD,該方法只返迴文件頭信息,不包括文件內容。然後使用 curl_getinfo 函數獲取文件大小,計算出文件的大小。
總結
filesize 函數是一個非常有用的 PHP 內置函數,可以用來獲取文件大小。在處理文件上傳或者下載時,需要獲取文件大小來做出相應的處理。除此之外,我們還介紹了如何遍歷文件夾、判斷文件是否存在以及獲取遠程文件的大小等內容。希望對你有所幫助!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/195484.html
微信掃一掃
支付寶掃一掃