Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用cURL从googlecode获取远程文件的文件大小?_Php_Curl_Filesize - Fatal编程技术网

Php 如何使用cURL从googlecode获取远程文件的文件大小?

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

我正在尝试使用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);
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'];我只是好奇旋度是怎么做到的,就是这样。看这里:看这里: