1

いくつかのファイルをフォルダーにアップロードしました。filesize 関数を使用すると、次のメッセージが表示されます。

Message: filesize() [function.filesize]: stat failed for http://www.books.tahasoft.com/216.ppt

ファイルのパスは次のとおりです。

http://www.books.tahasoft.com/216.ppt

ここに私のコードがあります:

<?
echo filesize("http://www.books.tahasoft.com/216.ppt");
?>

どうすればこれを修正できますか?

4

6 に答える 6

6

http プロトコル経由でファイルサイズを取得することはできません。

ファイルがローカル サーバー上にある場合は、ファイル システム内の絶対パスまたは相対パスで filesize を使用します。

于 2012-10-23T15:11:32.670 に答える
3

こんな感じで使えます・・・・・

 $ch = curl_init('http://www.books.tahasoft.com/216.ppt');
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
 curl_setopt($ch, CURLOPT_HEADER, TRUE);
 curl_setopt($ch, CURLOPT_NOBODY, TRUE);
 $data = curl_exec($ch);
 $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);

 curl_close($ch);
 echo $size;
于 2015-08-18T04:34:35.573 に答える
1

http://ストリーム ラッパーは一連の関数をサポートしていないため、ドキュメントで警告されているようにstatこれを行うことはできません。filesize

PHP 5.0.0 以降、この関数は一部のURL ラッパーでも使用できます。サポートされているプロトコルとラッパーを参照して、どのラッパーが stat() ファミリの機能をサポートしているかを確認してください。

最初にファイル全体をダウンロードせずに HTTP 経由でファイルサイズが必要な場合は、を使用して取得できる場合がありますcurlここでその方法を確認できます。ただし、これはリモート サーバーが返送することを決定したヘッダーに依存することに注意してください。常に機能するという保証はありません。

于 2012-10-23T15:11:58.983 に答える
1

代わりにこれを行うことができます。

echo strlen(file_get_contents("http://www.books.tahasoft.com/216.ppt"));
于 2012-10-23T15:12:12.853 に答える