Php 如何使用cURL从googlecode获取远程文件的文件大小?
我正在尝试使用cURL获取远程文件“compiler latest.zip”(googlecode.com)的文件大小,而不实际下载它,以下是我的PHP代码:Php 如何使用cURL从googlecode获取远程文件的文件大小?,php,curl,filesize,Php,Curl,Filesize,我正在尝试使用cURL获取远程文件“compiler latest.zip”(googlecode.com)的文件大小,而不实际下载它,以下是我的PHP代码: $url = 'http://closure-compiler.googlecode.com/files/compiler-latest.zip'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); cu
$url = 'http://closure-compiler.googlecode.com/files/compiler-latest.zip';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // optional
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // optional
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // optional
$result = curl_exec($ch);
$filesize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
print 'Filesize: ' . $filesize . '<br><br>';
print_r($result);
$url='1!'http://closure-compiler.googlecode.com/files/compiler-latest.zip';
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_头,1);
curl_setopt($ch,CURLOPT_NOBODY,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,curloopt_FOLLOWLOCATION,1);//可选择的
curl_setopt($ch,CURLOPT_MAXREDIRS,10);//可选择的
curl_setopt($ch,CURLOPT_TIMEOUT,60);//可选择的
$result=curl\u exec($ch);
$filesize=curl\u getinfo($ch,CURLINFO\u CONTENT\u LENGTH\u DOWNLOAD);
卷曲关闭($ch);
打印“文件大小:”$文件大小。”
';
打印(结果);
但是,我得到“HTTP/1.1 404未找到”状态,文件大小(1379字节)为这个错误404文档。
所以,如果我设置(CURLOPT_NOBODY,0),它将下载文件并返回正确的文件大小(当前为3820320字节)。我的问题是如何在不下载的情况下获得“compiler latest.zip”文件的正确文件大小
重要提示:此代码与googlecode.com之外的任何其他url一样有效。使用获取标题功能:
<?php
$headers = get_headers('http://closure-compiler.googlecode.com/files/compiler-latest.zip');
$content_length = -1;
foreach ($headers as $h)
{
preg_match('/Content-Length: (\d+)/', $h, $m);
if (isset($m[1]))
{
$content_length = (int)$m[1];
break;
}
}
echo $content_length;
使用获取标题功能:
<?php
$headers = get_headers('http://closure-compiler.googlecode.com/files/compiler-latest.zip');
$content_length = -1;
foreach ($headers as $h)
{
preg_match('/Content-Length: (\d+)/', $h, $m);
if (isset($m[1]))
{
$content_length = (int)$m[1];
break;
}
}
echo $content_length;
以及当缺少内容长度时如何获取文件大小?以及当缺少内容长度时如何获取文件大小?您是否使用HEAD方法查看头中是否返回了有用的内容?是的,我只获取头,它通常包含所有必要的数据,但不是在这种特殊情况下。您是否使用HEAD方法查看标头中是否返回了有用的内容?是的,我只获取标头—它通常包含所有必要的数据,但在这种特殊情况下不包含。谢谢,我的脚本已经使用了此函数,更简单的方法是:$data=get_headerS($url,1);echo$data['Content-Length'];我只是想知道如何使用CURL来实现它,就是这样。谢谢,我的脚本已经使用了这个函数,更简单的方法是:$data=get_headers($url,1);echo$data['Content-Length'];我只是好奇旋度是怎么做到的,就是这样。看这里:看这里: