php获取图像的KB大小
我一直在谷歌上搜索,但我得到的只是getimagesize和filesize。php获取图像的KB大小,php,filesize,getimagesize,Php,Filesize,Getimagesize,我一直在谷歌上搜索,但我得到的只是getimagesize和filesize。 getimagesize仅获取KB大小的宽度和高度,这不是我想要的。 filesize向我发送消息警告:filesize()[function.filesize]:stat失败 所讨论的文件是51kb.jpg文件 $imgsize=filesize("http://localhost/projects/site/schwe/user/1/1.jpg"); 不起作用, 如何实现这一点?您无法获取远程元素的文件大小,请
getimagesize仅获取KB大小的宽度和高度,这不是我想要的。
filesize向我发送消息警告:filesize()[function.filesize]:stat失败 所讨论的文件是51kb.jpg文件
$imgsize=filesize("http://localhost/projects/site/schwe/user/1/1.jpg");
不起作用,
如何实现这一点?您无法获取远程元素的文件大小,请给出系统上的相对路径或执行
文件获取内容()
以首先获取内容
. 因此,不使用http://,而是使用
文件大小('/path/to/local/system')
。确保其可读性通过php进程您不能像这样查找远程文件的文件大小。它用于查看本地文件的文件大小
例如
$imgsize = filesize( '/home/projects/site/1.jpg' );
filesize
将文件名作为参数而不是URL,并以字节为单位返回文件大小。您可以将返回值除以1024
以获得KB大小。filesize()
是要使用的函数。它可能会失败,因为
如果您试图在本地文件上运行
filesize()
,请参考文件系统路径,而不是某个web URL。我遇到了相同的问题,我就是这样解决的。我不知道它有多理想,但它对我来说很有效:
getimagesize("http://localhost/projects/site/schwe/user/1/1.jpg");
$file_size = $file[0]*$file[1]*$file["bits"];
或者,您也可以执行以下操作:
$header = get_headers($url);
foreach ($header as $head) {
if (preg_match('/Content-Length: /', $head)) {
$size = substr($head, 15);
}
}
是的,没错,我刚注意到,谢谢。我早该想到的,我真是个白痴。给小费怎么样?它说:“从PHP5.0.0开始,这个函数也可以与一些URL包装器一起使用。请参阅支持的协议和包装器,以确定哪些包装器支持stat()系列功能。”。看起来,您可以使用
filesize()
远程元素。您只需要正确配置服务器和PHP解析器(安全问题)。您使用的是哪个版本的PHP?如果filesize()不能与HTTP资源一起使用,则getimagesize()也会失败。通过乘以未压缩的图像属性来计算文件大小也会导致错误的结果。请参阅我对Stewie答案的评论。如果您的环境和服务器配置正确,您可以对远程文件使用文件大小。请参阅我对Stewie答案的评论。只要正确配置了环境和服务器,就可以为远程文件使用文件大小。