php获取图像的KB大小

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和filesize。
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()
是要使用的函数。它可能会失败,因为

  • 您正在尝试获取网址&URL包装器可能未打开
  • 该URL无效

  • 如果您试图在本地文件上运行
    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答案的评论。只要正确配置了环境和服务器,就可以为远程文件使用文件大小。