2013-01-09 10 views
5

ファイルがjpeg、pdfまたはtiffのいずれであるかを確認するにはどうすればよいですか?実際にはMIMEタイプとファイル拡張子だけでなく、実際にチェックすることを意味します。ファイルがJPEG、PDFまたはTIFFであることを確認してください

私は未加工のファイルデータにアクセスできます(このチェックはアップローダの一部です)、ファイルがjpeg、pdfまたはtiffのいずれかであることを確認する必要があります。私は、ファイル内のいくつかの種類のヘッダーを確認する必要があると仮定しますが、私は何を探すべきか、どこから始めるべきかは分かりません。

答えて

1

バイトシーケンステストを実装する必要があります。

Hereは、最も一般的な画像形式のバイトシーケンスを確認するためのガイドです。

+1

最も悪い答えの一つです。コードサンプルなしのダイレクトリンク。 –

+0

最悪のコメントの1つです。あなたは形容詞で "最悪"を修正することはできません。 –

+0

私のコメントは私の英語が悪いとあなたの意見があなたのアプローチが悪いと示しています。とにかく、「最悪」以上の良い発言に感謝します。 –

4

Exif_imagetypeは、このために非常に便利です:http://us2.php.net/manual/en/function.exif-imagetype.php

それはグラフィックのタイプを決定するために、ファイルの最初のバイトをスキャンします。多数のグラフィック形式をサポートしています(形式を認識できない場合はfalseを返します)。

+0

PDFファイル拡張子があるで始まる場合は、ファイルを開くと、最初のバイトを読んで、見ていますか? –

1

生ファイルにアクセスできる場合は、ファイルヘッダのmagic numberを確認できます。この番号は、ファイルのタイプを定義します。

0

これは、すべてのファイルが基本的にフォーマットの「ヘッダー」である「魔法の数」を持つ特定の種類のISO標準に従わなければならないため、扱いにくいことがあります。

私は別の署名については、このwikiのページを見つけました:http://en.wikipedia.org/wiki/List_of_file_signatures

だから最良のシナリオであなただけのこれらの最初のバイトを検証する必要があります。

0

画像タイプを確認するにはexif_imagetype機能を使用できます。 PDFファイルのための :それは「%のPDF」

$fp = fopen($pdf, 'r'); 
if(fgets($fp, 4) == '%PDF') 
{ 
    ... is pdf 
} 
fclose($fp); 
関連する問題