Java 核实文件的完整性

Java 核实文件的完整性,java,apache-poi,apache-tika,odftoolkit,itextpdf,Java,Apache Poi,Apache Tika,Odftoolkit,Itextpdf,验证这些文件完整性的步骤是什么文档,docx,docm,odt,rtf,pdf,odf,odp,xls,xlsx,xlsm,ppt,pptm 或者至少是其中的一些。通常在上载到内容存储库时 我猜inputStream总是从多部分http请求中正确读取99,99%,否则将抛出异常并采取措施。但用户可以上传已经损坏的文件-我是否使用第三方库进行检查?我在odftoolkit、itextpdf、pdfbox、apache poi或tika中没有看到类似的内容。对于上面列出的所有文件格式,都有可以打开的

验证这些文件完整性的步骤是什么<代码>文档,docx,docm,odt,rtf,pdf,odf,odp,xls,xlsx,xlsm,ppt,pptm

或者至少是其中的一些。通常在上载到内容存储库时


我猜inputStream总是从多部分http请求中正确读取99,99%,否则将抛出异常并采取措施。但用户可以上传已经损坏的文件-我是否使用第三方库进行检查?我在odftoolkit、itextpdf、pdfbox、apache poi或tika中没有看到类似的内容。对于上面列出的所有文件格式,都有可以打开的第三方库等。我不知道“仅验证”但我认为,能够毫无例外地打开它们等,至少是一个基本的检查,该文件是在指定的格式。。。一个这样的(商业)库是
Aspose
-不是附属的,只是一个快乐的客户…

您可以在上传之前对文件进行校验和/哈希(即安全哈希),然后单独上传校验和。如果随后下载的文件具有相同的校验和,则该文件没有从原始文件更改(根据使用的校验和/哈希值,更改的概率很高)。

有多种“损坏”

  • 有些腐败应该很容易发现。例如,当您试图打开一个被截断的ODF文件时,它很可能会失败,因为ZIP阅读器无法读取它

  • 其他人几乎无法察觉。例如,RTF文件中的一个字符损坏将无法检测到,因此(我认为)大多数RTF文件截断都将无法检测到



如果您发现一个(免费)工具可以为所有这些文件类型执行此工作,即使在技术上是可行的,我也会感到惊讶。当前一代用于读/写文档格式的开源库倾向于只关注一系列格式。如果你是认真的,你可能需要使用一个商业库。

去检查LibreOffice项目(它已经处理了这些档案),它有用Java编写的部分,你肯定可以找到并使用它们的mecanism来检查损坏的文件

我想你可以从这里得到代码:


大多数情况下没有“打开”,但提供inputstream和解析或获取dom模型等,这可能由于各种原因而失败,但文档仍然没有损坏。这一点都不好玩:-)有一点是肯定的,我不会花7497美元购买Aspose:-)有太多的图片我提到传输没有问题,但用户可能会上传它已经损坏了。也许我不该用“正直”这个词你在找什么样的腐败?故意的意外的单字节损坏?文件被截断?那么说“该文件看起来有点不确定”就足够了吗?还是说在Office 2003 build 12345或Office 2008 for Mac build 4321中,您必须只接受说“打开而不发出警告”的文件?我只是想知道如何处理TikaException,因为解析是您可能遇到此问题的地方,但您只需要了解在解析过程中发生了什么样的问题。在这种情况下应该怎么做?我真的要负责文档的交付,我不会将文件存储在内容存储库中。我以前没有文档处理经验,你能给出一些数字吗?可能性统计数据?