PHP文件大小为绝对路径

时间:2010-11-13 13:29:37

标签: php filesize

我很惊讶PHP的filesize()在绝对路径上失败了? 我的文件在我自己的服务器上,我怎样才能获得文件大小,除了将它们转换为相对文件(乱七八糟)

修改

示例:

$filename = 'http://172.16.xx.x/app/albums/002140/tn/020.jpg';
echo $filename . ': ' . filesize($filename) . ' bytes';

Warning: filesize() [function.filesize]: stat failed for http://172.16.xx.x/app/albums/002140/tn/020.jpg in /Applications/XAMPP/xamppfiles/htdocs/app/admin/+tests/filesize.php on line 26

结束编辑

我为远程文件找到了这个例子:

$filename = 'http://www.google.com/logos/2010/stevenson10-hp.jpg';
$headers = get_headers($filename, 1);
echo $headers['Content-Length']; // size in bytes

这是否可以在不下载文件的情况下工作?

7 个答案:

答案 0 :(得分:5)

http://172.16.xx.x/app/albums/002140/tn/020.jpg不是绝对路径,而是URL。它的绝对路径就像/var/www/app/albums/002140/tn/020.jpg。您应该在filesize()中使用该绝对路径。

filesize()仅支持支持stat()的URL包装器。 HTTP和HTTPS不支持HTTP and HTTPS wrappers的手册页中提到的那些。

答案 1 :(得分:2)

是的,它会正常工作。

$filename = 'http://172.16.xx.x/app/albums/002140/tn/020.jpg';

$headers  = get_headers($filename, 1);

$fsize    = $headers['Content-Length'];

答案 2 :(得分:2)

您可以像这样使用...按URL获取文件大小

$ch = curl_init('http://172.16.xx.x/app/albums/002140/tn/020.jpg');
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
 curl_setopt($ch, CURLOPT_HEADER, TRUE);
 curl_setopt($ch, CURLOPT_NOBODY, TRUE);
 $data = curl_exec($ch);
 $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);

 curl_close($ch);
 echo $size;

答案 3 :(得分:1)

正如我所怀疑的,您正在尝试向filesize()提供HTTP网址,但这不起作用。 filesize()适用于本地文件系统网址,例如http://www.php.net/manual/en/wrappers.file.php中列出的网址。

据推测,当您尝试访问自己服务器上的文件时,您必须拥有文件系统URL,而不仅仅是HTTP URL?

答案 4 :(得分:1)

使用函数filesize();

你应该有绝对路径而不是网址

http://www.php.net//manual/en/function.filesize.php

答案 5 :(得分:0)

get_headers()会向您的服务器发送一个GET,这会为您的Web服务器增加负载。

我没理解,你的filesize()在绝对路径上失败了吗?它不应该。根据php.net: http://www.php.net/manual/en/wrappers.file.php

修改 如果allow_url_fopen设置为0,我不确定PHP会给你的错误,但是在PHP.ini中检查这一行(然后重启apache):http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

如果关闭,filesize()将不会处理URL。让我知道是不是。

答案 6 :(得分:-3)

我认为你必须使用filesize()函数。

http://php.net/manual/en/function.filesize.php

echo filesize( $filename );