我正在尝试对包含 HUGEBLOB 文件的 Oracle 表进行数据转换/升级,并且该表中的列仅列出文件名和 MIME 类型。文件名并不总是(实际上在很多情况下)提供文件类型的扩展名,对于那些不提供的文件名,MIME 类型为“application/octet-stream”,我无法轻松确定原始文件类型是什么并翻译它给它正确的文件扩展名。据我了解,“application/octet-stream”只是一种基本的二进制文件类型。然而,它们中的许多标签实际上是 doc 文件、文本文件、pdf 等,但无论出于何种原因,它们都没有以其正确的 MIME 类型上传到数据库中(一个非常糟糕的编码系统!)。所以我' 我试图弄清楚文件的二进制代码中是否存在我可以确定/提取实际文件类型/扩展名的地方——如果是的话——如何?上传到 SQL FileTable 时将需要此文件类型扩展名,否则新系统也不知道它是什么类型的文件!
问问题
707 次
1 回答
0
通常,可以通过查看文件的前几个字节来确定文件类型。当然,如果您尝试自己实现它,随着可能的文件格式数量的增加,这会变得非常乏味。最有可能的是,您希望利用已经支持大量文件格式的应用程序或框架来尝试找出至少绝大多数文件。
就个人而言,我可能会从Apache Tika 之类的东西开始进行自动文件识别。这将涉及编写一些 Java 代码作为数据库中的存储过程或作为在数据库外部运行的独立程序。如果您更习惯使用其他语言,您可能会为该语言找到类似的 API。您还可以使用现有的独立应用程序来确定文件类型,但这几乎肯定需要将文件从数据库保存到操作系统,并且与您的 ETL 工具集成可能比自定义构建的代码更难。
于 2014-12-08T21:41:53.237 回答