我阅读了filesize()能够从远程文件计算文件大小的手册。
但是,当我尝试用下面的代码片段做到这一点时。我收到错误PHP Warning: filesize(): stat failed for http://someserver/free_wallpaper/jpg/0000122_480_320.jpg in /tmp/test.php on line 5
这是我的代码段:
$file = "http://someserver/free_wallpaper/jpg/0000122_480_320.jpg";
echo filesize( $file );
原来,我无法使用HTTP 文件大小()。案件结束。我会用的 片段here作为解决方法 溶液
答案 0 :(得分:4)
您可以使用以下代码获取网址的文件大小
function getFileSize($ file){
$ch = curl_init($file);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);
$contentLength=0;
if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
$contentLength = (int)$matches[1];
}
return $contentLength; }
答案 1 :(得分:2)
filesize
不适用于HTTP - 它取决于stat
,isn't supported for the HTTP(S) protocol。
filesize的PHP手册页说:
Refer to List of Supported Protocols/Wrappers for a listing of which wrappers support stat() family of functionality.
这并不意味着每个协议/包装器都使用filesize
“开箱即用”。您可以通过执行远程URL的完整GET并计算您获得的数据的大小来解决这个问题,如果您可以获得Content-Length标头,则可以尝试HEAD请求以避免传输文件数据。 / p>
答案 2 :(得分:0)
我不知道你在哪里读到的。 filesize
需要stat
,并且基于HTTP wrapper
页面,我认为它不支持stat
任何版本的PHP。
答案 3 :(得分:0)
您可能希望使用http_head()进行调查。我认为您引用的代码段会下载文件以确定文件大小,这可能不是必需的。如果您引用的Web服务器发回准确的标头信息,您应该能够确定文件大小,日期修改和其他一些有用的标识功能。
答案 4 :(得分:0)
如果您想获得远程图片尺寸,请尝试使用getimagesize()