验证文档的完整性

时间:2011-07-25 00:06:49

标签: java apache-poi apache-tika odftoolkit itextpdf

验证这些文档的完整性有哪些步骤? doc,docx,docm,odt,rtf,pdf,odf,odp,xls,xlsx,xlsm,ppt,pptm

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

我想inputStream总是从MultiPart http请求中正确读取99,99%,否则将抛出异常并采取操作。但是用户可以上传已损坏的文件 - 我是否使用第三方库进行检查?我没有在odftoolkit,itextpdf,pdfbox,apache poi或tika中看到类似的东西

4 个答案:

答案 0 :(得分:2)

有很多种“腐败”。

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

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


如果您找到一个(免费)工具来为所有这些文件类型执行此工作,即使在技术上可行的范围内,我也会感到惊讶。用于读/写文档格式的当前一代开源库往往只关注一类格式。如果您对此很认真,可能需要使用商业图书馆。

答案 1 :(得分:0)

对于上面列出的所有文件格式,都有第三方库可以打开等等 - 我不知道“仅验证”但我认为能够在没有例外的情况下打开它们至少是基本检查文件是否在指定的格式内...一个这样的(商业)库是Aspose - 没有附属,只是一个快乐的客户......

答案 2 :(得分:0)

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

答案 3 :(得分:0)

去检查LibreOffice项目(已经处理过这些档案),它有用Java编写的部分,当然你可以找到并使用它们的机制来检查是否有损坏的文件。

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

http://www.libreoffice.org/get-involved/developers/