如果您正在使用 Symfony 的 UploadedFile,
请注意,如果您在调用 @move 后调用此方法,
您很可能会得到
一些难以追踪的错误,显示
`stat failed`
如果您仔细想想,这确实是有道理的,
文件已被 Symfony 移动,但 getSize 在 SplFileInfo 中,
而 SplFileInfo 并不知道文件已被移动。
奇怪的是,这个错误在我的工作 Mac 上没有出现 :|
(PHP 5 >= 5.1.2, PHP 7, PHP 8)
SplFileInfo::getSize — 获取文件大小
此函数没有参数。
成功时返回文件大小(以字节为单位),失败时返回false
。
如果文件不存在或发生错误,则会抛出RuntimeException。
示例 #1 SplFileInfo::getSize() 示例
<?php
$info = new SplFileInfo('example.jpg');
echo $fileinfo->getFilename() . " " . $fileinfo->getSize();
?>
以上示例将输出类似以下内容
example.jpg 15385
如果您正在使用 Symfony 的 UploadedFile,
请注意,如果您在调用 @move 后调用此方法,
您很可能会得到
一些难以追踪的错误,显示
`stat failed`
如果您仔细想想,这确实是有道理的,
文件已被 Symfony 移动,但 getSize 在 SplFileInfo 中,
而 SplFileInfo 并不知道文件已被移动。
奇怪的是,这个错误在我的工作 Mac 上没有出现 :|
查看https://php.net/manual/en/function.filesize.php#115792 以获取在 32 位系统上针对大于 2GB 文件的快速可靠的文件大小版本。
当 getSize 在 fwrtite 后返回 0 时,您必须使用 clearstatcache
$tmpFile = new \SplFileObject('/tmp/file.txt');
$fp = $tmpFile->openFile('w');
$fp->fwrite('123');
$fp->fflush();
echo $fp->getSize(); //返回 0
clearstatcache();
echo $fp->getSize(); //返回 3
https://bugs.php.net/bug.php?id=72182