PHP:使用strlen获取远程文件大小 (html)
mayingbao
阅读:218
2025-06-02 22:19:02
评论:0
我正在查看 fsockopen 和诸如此类的 PHP 文档,他们说你不能在远程文件上使用 filesize() 而不用 ftell 或其他东西做一些疯狂的事情(不确定他们说的到底是什么),但我有一个好好想想怎么做:
$file = file_get_contents("http://www.google.com");
$filesize = mb_strlen($file) / 1000; //KBs, mb_* in case file contains unicode
这是个好方法吗?当时看起来非常简单好用,只是想知道这是否会遇到问题或不是真实的文件大小。
顺便说一句,我只想在文本(网站)上使用它,而不是二进制文件。
请您参考如下方法:
此答案需要 PHP5 和 cUrl。它首先检查 header 。如果未指定 Content-Length,它会使用 cUrl 下载它并检查大小(尽管文件不会保存在任何地方——只是暂时保存在内存中)。
<?php
echo get_remote_size("http://www.google.com/");
function get_remote_size($url) {
$headers = get_headers($url, 1);
if (isset($headers['Content-Length'])) return $headers['Content-Length'];
if (isset($headers['Content-length'])) return $headers['Content-length'];
$c = curl_init();
curl_setopt_array($c, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array('User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3'),
));
curl_exec($c);
return curl_getinfo($c, CURLINFO_SIZE_DOWNLOAD);
}
?>
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



