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