一、使用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()函数还是比较方便的。