2

我正在使用 PHP 在 MySQL BLOB 字段中存储一个文件。稍后我试图将该 BLOB 数据作为邮件附件发送。

我的问题是:如何在 PHP 中获取 BLOB 对象的类型?该 BLOB 对象可以是 PDF 或 Word 文件。在不知道文件类型的情况下,我们无法发送邮件。

请给我建议解决方案,谢谢。

4

2 回答 2

2

BLOB 对象的数据的原始文件类型不存储在 MySQL 中,因此无法立即知道文件是什么文件类型。

为了获取文件类型,您可以执行以下操作:

  • 在 MySQL 中,创建一个文件类型的字段,当存储文件数据时,也存储文件类型。
  • 检查文件签名。大多数文件在格式相同时具有相同的第一个字节。对于 PDF 文件,签名是%PDF,对于 Word 文件,签名由以下字节组成(以十六进制显示):50 4B 03 04 14 00 06 00. 我找到了一张表格,您可以在其中找到许多文件签名。请注意,检查签名并不适用于所有文件格式。
  • 为了使事情变得更容易,您可以使用 PHP 中的FileInfo函数。
于 2012-11-27T10:02:55.340 回答
0

您可以检查文件签名。这是定义文件类型和版本的文件的第一行。

对于 PDF,它应该是 %PDF 对于 MS Office <= 2003:ÐÏ.ࡱ.á 对于 MS Office > 2003:PK......(因为它是压缩格式,它与 zip 文件具有相同的签名)

虽然,实现此目的的更简单方法应该是在将文件保存在新列中时存储文档类型。

于 2012-11-27T09:15:00.197 回答