2

PHPを使用してMySQLBLOBフィールドにファイルを保存しています。後で、そのBLOBデータを添付ファイルとしてメールで送信しようとしています。

私の質問は、PHPでBLOBオブジェクトのタイプを取得するにはどうすればよいですか?そのBLOBオブジェクトは、PDFまたはWordファイルにすることができます。ファイルの種類がわからないとメールを送ることができません。

解決策を提案してください、ありがとう。

4

2 に答える 2

2

BLOBオブジェクトのデータの元のファイルタイプはMySQLに保存されないため、ファイルがどのファイルタイプであるかを即座に知ることはできません。

ファイルタイプを取得するために、特定のことを行うことができます。

  • MySQLでは、ファイルタイプを使用してフィールドを作成し、ファイルデータを保存するときに、ファイルタイプも保存します。
  • ファイルの署名を確認してください。ほとんどのファイルは、同じ形式の場合、最初のバイトが同じになります。PDFファイルの場合、署名は%PDFです。Wordファイルの場合、署名は次のバイトで構成されます(16進数で表示)50 4B 03 04 14 00 06 00。多くのファイル署名を見つけることができるテーブルを見つけました。署名の確認は、すべてのファイル形式に適用されるわけではないことに注意してください。
  • 作業を簡単にするために、PHPのFileInfo関数を使用できます。
于 2012-11-27T10:02:55.340 に答える
0

You could check for the file signature. That's the first line of the file defining the file type and version.

For PDF it should be %PDF For MS Office <= 2003: ÐÏ.ࡱ.á For MS Office > 2003: PK...... (As it's a compressed format, it have the same signature as zip files)

Although, an easier way to achieve this should be to store the doc type when saving the file in a new column.

于 2012-11-27T09:15:00.197 に答える