filesize()函数不起作用

时间:2012-10-23 15:08:49

标签: php file size

我将一些文件上传到文件夹,当我使用filesize函数时,我收到此消息:

Message: filesize() [function.filesize]: stat failed for http://www.books.tahasoft.com/216.ppt

文件的路径是:

http://www.books.tahasoft.com/216.ppt

这是我的代码:

<?
echo filesize("http://www.books.tahasoft.com/216.ppt");
?>

我该如何解决这个问题?

6 个答案:

答案 0 :(得分:6)

您无法通过http协议获取文件大小。

如果文件位于本地服务器上,请在文件系统中使用带有绝对路径或相对路径的filesize。

答案 1 :(得分:3)

你可以这样使用.......

 $ch = curl_init('http://www.books.tahasoft.com/216.ppt');
 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;

答案 2 :(得分:1)

http://流包装器does not support stat系列函数,因此您无法使用filesize执行此操作,因为文档警告:

  

从PHP 5.0.0开始,此函数也可以与某些 URL一起使用   包装。请参阅支持的协议和包装器以确定哪个   包装器支持stat()系列功能。

如果您需要基于HTTP的文件大小而不必先下载整个文件,您可以使用curl获取它;你可以看到如何做到这一点here。但请记住,这取决于远程服务器决定发回的标头; 无保证它始终有效。

答案 3 :(得分:1)

你可以这样做。

echo strlen(file_get_contents("http://www.books.tahasoft.com/216.ppt"));

答案 4 :(得分:0)

您可以做的最好的事情是对文件执行HTTP HEAD请求,并检查Content-Length标头是否存在;唯一的另一种方法是下载整个文件,并检查其长度 - 但在我看来,这不是一个真正的选择。

答案 5 :(得分:0)

要从filesize()函数获取文件大小,您需要添加文件的文件夹路径以获取大小。

==&GT;假方法:$ filePath =“http://www.books.tahasoft.com/216.ppt”;

==&GT; True方法:文件夹路径如:$ filePath ='/ home / www / uploadpath / filename';

因此,您可以通过调用函数来获得结果:

文件大小($文件路径);

OR

如果你想从链接中获取大小,你必须这样做:

的strlen(的file_get_contents( “http://www.books.tahasoft.com/216.ppt”));