cURLのでgooglecodeからリモートファイルのファイルサイズを取得するには?
質問
私は実際にそれをダウンロードせずに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);
しかし、私は、「HTTP / 1.1 404が見つかりません」このエラー404文書のファイルサイズ(1379バイト)とステータスを取得。 私は(CURLOPT_NOBODY、0)を設定するのであれば、それはファイルをダウンロードし、その正しいファイルサイズ(現在は3820320バイト)を返します。私の質問は、それをダウンロードすることなく、「compiler-latest.zip」ファイルの正しいファイルサイズを取得する方法です?
重要:このコードはgooglecode.comの外の他のURLと期待通りに動作します。
解決
を使用するの get_headers の機能ます:
<?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;
他のヒント
とファイルサイズを取得する方法、コンテンツの長さ不足しているとき?
所属していません StackOverflow