【发布时间】:2015-10-03 07:09:23
【问题描述】:
我有大量文件,它们的原始文件名已被我数据库中的 id 替换。例如,曾经的名称 word_document.doc 现在是 12345。通过一个过程,我失去了原来的名字。
我现在正在尝试提供这些文件以供下载。该人应该能够下载该文件并使用它的原始应用程序查看它。这些文件都采用以下格式之一:
- .txt(文本)
- .doc(word文档)
- .docx(word文档)
- .wpd(完美字)
- .pdf (PDF)
- .rtf(富文本)
- .sxw(明星办公室)
- .odt(开放式办公室)
我正在使用
$fhandle = finfo_open(FILEINFO_MIME);
$file_mime_type = finfo_file($fhandle, $filepath);
获取 mime 类型,然后将 mime 类型映射到扩展。
我遇到的问题是某些文件的 mime 类型为 octet-stream。我在网上阅读过,这种类型似乎是二进制文件的杂项类型。我不能轻易说出扩展需要什么。在某些情况下,当我将其设置为 .wpd 时它会起作用,而在某些情况下则不会。 .sxw也是如此。
【问题讨论】:
-
大声笑,想想你帖子中的主要短语 - “通过一个过程,我失去了原来的名字”。您已经在数据库中保存了一些信息,为什么不将文件名也保存在数据库中?
-
这对你有帮助吗? tika.apache.org
-
@degr 我确实将文件名保存在数据库中,但允许用户“删除”他们的文件。 “删除”只是删除数据库中包含文件名等信息的行。作为网站的一部分,我们需要保留这些文件并让它们仍然可以访问,因为这些文件现在归他人所有。
-
@Caleb Doucet 您需要从数据库中删除带有行的文件。如果您需要保留文件,您也可以在数据库中保留行,只需添加一个名为 - 删除的“位”字段。
-
@degr 我知道解决方案是只保留数据库记录,但这需要大量返工。 (这是一个大系统)预算无法满足您的提议。
标签: php mime-types fileinfo