在PHP中查找MySQL BLOB对象的类型

时间:2012-11-03 07:03:16

标签: php mysql blob phpmailer

我使用PHP将文件存储在MySQL BLOB字段中。后来我试图将BLOB数据作为邮件中的附件发送。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

  • 在MySQL中,使用文件类型创建一个字段,并在存储文件数据时,还存储文件类型。
  • 检查文件签名。当大多数文件具有相同格式时,它们的第一个字节相同。对于PDF文件,签名为%PDF,对于Word文件,签名由这些字节组成(以十六进制显示):50 4B 03 04 14 00 06 00。我找到了a table,您可以在其中找到许多文件签名。请注意,检查签名不适用于所有文件格式。
  • 为了简化操作,您可以使用PHP中的FileInfo函数。

答案 1 :(得分:0)

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

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

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