微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-确定字符串的文件类型

PHP附带了多种方法来识别文件类型,但是当所讨论的文件仅以二进制字符串表示形式而不是磁盘上的实际文件形式存在时,是否可以识别数据类型?

这样做的原因是,我正在CMS上进行一些维护工作,以前的开发人员由于有点笨拙,决定将图像数据作为数据库BLOB存储到系统中.我当前的项目是将BLOB转储到文件中,并将文件路径保存到数据库中以代替BLOB.

就像我说的那样,我的前任有点笨拙,他不仅将所有这些数据存储为BLOB,而且还没有将数据的数据类型保存在任何地方.

我为该项目的一部分编写的迁移实用程序将文件扩展名保存到光盘中,不使用扩展名,尝试使用exif_imagetype()确定文件的类型,如果设法识别文件类型,则使用正确的扩展名重命名文件.

但是,使用图像数据的类也需要更新,因此它们可以继续使用磁盘上的路径和文件而不是BLOB起作用.

创建和更新图像的方法需要二进制字符串(将BLOB存入数据库),在理想情况下,我宁愿重写这些方法以使用is_uploaded_file,move_uploaded_file等.但是,在直接操作类中没有证据表明$_FILES数组,因此文件数据显然来自类外部,但是考虑到代码的复杂程度(并且没有任何帮助的注释),我找不到它.

作为权宜之计,直到最终找到实际的文件上传管理代码为止,我计划像目前所做的那样在类中将文件数据作为字符串处理,但将字符串保存到文件中而不是保存到数据库中.这应该最大程度地减少对依赖此类的代码库其他部分的影响.

我可以执行迁移脚本的工作,然后在保存并标识文件重命名文件,但这在存在文件的情况下可能会出现问题.在将数据提交到磁盘之前,我宁愿知道数据类型是什么.

解决方法:

finfo_buffer()是您想要的.您可以将其传递给您的字符串,它将告诉您基于mime.magic文件文件类型.

更多信息在这里http://us3.php.net/manual/en/function.finfo-buffer.php

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐