2

filesize()がリモートファイルからファイルサイズを計算できるというマニュアルを読みました。ただし、以下のスニペットでそれを実行しようとすると。エラーが発生しましたPHP Warning: filesize(): stat failed for http://someserver/free_wallpaper/jpg/0000122_480_320.jpg in /tmp/test.php on line 5

これが私のスニペットです:

$file = "http://someserver/free_wallpaper/jpg/0000122_480_320.jpg";
echo filesize( $file );

結局のところ、filesize()にHTTPを使用することはできません。名探偵コナン。ここでは、回避策としてスニペットを使用します。

4

5 に答える 5

2

filesizeHTTPでは機能しません-に依存しますがstat、これはHTTP(S)プロトコルではサポートされていません

filesizeのPHPmanページには次のように書かれています。

Refer to List of Supported Protocols/Wrappers for a listing of which wrappers support stat() family of functionality.

これは、すべてのプロトコル/ラッパーが「箱から出して」動作することを意味するわけではありませんfilesize。リモートURLの完全なGETを実行し、取得するデータのサイズを計算することで、いつでもそれを回避できます。Content-Lengthヘッダーを取得できる場合は、HEADリクエストを試して、ファイルデータの転送を回避できます。

于 2010-07-12T04:25:07.843 に答える
1

以下のコードを使用して、Web URL のファイル サイズを取得できます。

関数 getFileSize($file){

   $ch = curl_init($file);
   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=0;
   if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
       $contentLength = (int)$matches[1];

   }
   return $contentLength; }
于 2014-02-26T10:32:16.297 に答える
0

どこで読んだのかわかりません。 filesizeが必要statであり、ページに基づいて、PHPのどのバージョンでもHTTP wrapperサポートされていないと思います。stat

于 2010-07-12T04:24:58.250 に答える
0

http_head()を使用して調査することをお勧めします。参照するスニペットはファイルをダウンロードしてファイルサイズを決定すると思いますが、これは必要ない場合があります。参照しているWebサーバーが正確なヘッダー情報を送り返す場合は、ファイルサイズ、日付変更、およびその他のいくつかの便利な識別機能を判別できるはずです。

于 2010-07-12T04:33:46.690 に答える
0

リモート画像のサイズを取得したい場合は、使用してみてくださいgetimagesize()

于 2010-07-12T05:19:09.987 に答える