1

我将一些文件上传到一个文件夹,当我使用文件大小功能时,我收到以下消息:

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");
?>

我怎样才能解决这个问题?

4

6 回答 6

6

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

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

于 2012-10-23T15:11:32.670 回答
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;
于 2015-08-18T04:34:35.573 回答
1

http://包装器不支持stat函数系列,因此您不能filesize像文档警告的那样这样做:

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

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

于 2012-10-23T15:11:58.983 回答
1

你可以这样做。

echo strlen(file_get_contents("http://www.books.tahasoft.com/216.ppt"));
于 2012-10-23T15:12:12.853 回答
0

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

于 2012-10-23T17:14:33.810 回答
0

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

==> 错误方法:$filePath = " http://www.books.tahasoft.com/216.ppt ";

==> 正确方法:文件夹路径如:$filePath = '/home/www/uploadpath/filename';

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

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

或者

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

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

于 2017-02-10T05:13:08.963 回答