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


标签:PHP
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号