3

ダウンロードせずにリモートファイルのサイズを取得する必要があります。私はこのコードを使用しますが、一部のサイトのヘッダーにはContent-Length:フィールドが含まれていません。その場合、ファイルサイズを取得するにはどうすればよいですか?

$ch = curl_init("http://wordpress.org/latest.zip");
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);

$contentLength = 'unknown';
if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
  $contentLength = (int)$matches[1];
}
echo $contentLength;

これは echo $data; の結果です。

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 10 Apr 2012 11:32:20 GMT
Content-Type: application/zip
Connection: close
Pragma: no-cache
Cache-control: private
Content-Description: File Transfer
Content-Disposition: attachment; filename=wordpress-3.3.1.zip
Content-MD5: d6332c76ec09fdc13db412ca0b024df9
X-nc: EXPIRED luv 139
4

1 に答える 1

0

Content-Length ヘッダーが存在しない場合は、ファイル サイズが不明であることを意味します。あなたの場合、Content-Disposition ヘッダーがあります。これは、ダウンロード可能なファイルがサーバー応答への添付ファイルであることを意味します (電子メールの添付ファイルと同じ)。したがって、Content-Length ヘッダーがない場合、サイズを取得できません。

于 2012-04-11T05:57:02.787 に答える