2012-05-07 19 views

答えて

2

から:https://stackoverflow.com/a/3894706/187954

<?php 
$headers = get_headers('http://humus101.com/wp-content/uploads/2009/11/Hummus-soup.jpg'); 
$size = null; 
foreach($headers as $h){ 
    /** look for Content-Length, and stick it in $size **/ 
} 
if ($size === null){ //we didn't get a Content-Length header 
    /** Grab file to local disk and use filesize() to set $size **/ 
} 

echo "image is $size bytes"; 
+0

ありがとう! 1MB(つまり1024 * 1024)の場合、$ sizeは1048576という値になると思いますか? – weltschmerz

+0

ああ私は$ sizeがイメージの高さと幅を持つ配列であるがサイズはバイトではないことを見てきました。誰がそれを得る方法を知っていますか? – weltschmerz

+0

@Dennis私はほぼ同じ時刻に気づいた:)私の答えは別のSOの回答を参照して更新 –

1

私はこの記事を参照することになり、私はそれがあなたの質問に答えると思います。 Easiest way to grab filesize of remote file in PHP?

(私が知っている)2つのアプローチがあります。 1つは、CURLを使用してヘッダーのみをフェッチすること(より効率的で信頼性が低い)とfile_get_contents (more reliable, less efficient)です。

CURLを使用すると、ファイルサイズであるCONTENT_LENGTHヘッダーだけを取得できます。それから、1MBを超えるかどうかを調べるためにそこから簡単な数学を行うことができます。問題は、リモートサーバーがその機能をサポートしていない可能性があることです。

strlen(file_get_contents("YOUR URL"))を使用すると、ファイル内のbyesの合計を取得できますが、スクリプトはまずファイルをダウンロードする必要があります。これは大きな画像の場合には問題です。

ファイルの種類を確認するには、substrを使用してファイル拡張子を確認します。このような

何かが動作しますが、独自の問題

$ext = substr($URL, -3, 3); 

if($ext == 'jpg' || $ext == 'gif') { 
    //is image 
}else{ 
    //not image 
} 
+0

マイケルからのアプローチは私よりも良い –

+0

ありがとう!私はもっ​​とクリーンなソリューションを見つけたと思う。質問の編集をご覧ください。 – weltschmerz

関連する問題