我将一些文件上传到文件夹,当我使用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");
?>
我该如何解决这个问题?
答案 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”));