6

ファイルが jpeg、pdf、または tiff であることを確認するにはどうすればよいですか? つまり、MIME タイプやファイル拡張子だけでなく、実際にチェックするということです。

生のファイル データにアクセスできます (このチェックはアップローダーの一部です)。ファイルが jpeg、pdf、または tiff のいずれかであることを確認する必要があります。ファイル内のある種のヘッダーを確認する必要があると思いますが、何を探してどこから始めればよいかわかりません。

4

5 に答える 5

4

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

ファイルの最初のバイトをスキャンして、グラフィックの種類を判別します。多数のグラフィック形式をサポートしています (形式を認識しない場合は false を返します)。

于 2013-01-09T15:13:06.343 に答える
1

raw ファイルにアクセスできる場合は、ファイル ヘッダーでそのマジック ナンバーを確認できます。この番号は、ファイルのタイプを定義します。

于 2013-01-09T15:13:16.303 に答える
1

すべてのファイルは、基本的にフォーマットの「ヘッダー」である「マジックナンバー」が存在する特定の種類の ISO 標準に従う必要があるため、これは注意が必要です。

さまざまな署名に関するこの wiki ページを見つけました: http://en.wikipedia.org/wiki/List_of_file_signatures

したがって、最良のシナリオでは、これらの最初のバイトを検証するだけで済みます。

于 2013-01-09T15:13:38.677 に答える
1

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

以下は、最も一般的な画像形式のバイト シーケンスをチェックするためのガイドです。

于 2013-01-09T15:14:54.710 に答える
0

画像タイプを確認するには、exif_imagetype関数を使用できます。PDF の場合: ファイルを開いて最初のバイトを読み取り、「%PDF」で始まるかどうかを確認する必要があります。

$fp = fopen($pdf, 'r');
if(fgets($fp, 4) == '%PDF')
{ 
    ... is pdf
}
fclose($fp);
于 2013-01-09T15:15:21.027 に答える