2017-09-03 34 views
0

假设我们将一组MS Office文件从一个共享驱动器迁移到SharePoint(例如SharePoint Online)。仅限于Office 2007以上版本,因此文件扩展名如DOCX,XLSX。由于添加了元数据,SharePoint首次保存时会更改MS Office文件的大小。可以确认内容没有改变?

我们发现,当文件保存到SharePoint时,文件的大小会发生变化 - 因为添加了某些元数据。 (尽管非MS Office文件(如PDF或JPEG)的文件大小不会更改)。

这些MS Office文件是“容器”,其中放置了许多组件部分 - 通过将XLSX文件的扩展名(比如说)更改为ZIP并使用WinZip打开它,可以粗略地查看这种情况。

出于良好的声音完整性原因,我们希望确保“文件内容”组件部分没有改变。

我们如何识别代表内容的容器内的组件部分? 这些组件在按照描述保存到SharePoint时是不变的吗?

如果是这样,是否有任何工具可以分析一对这样的文件并确认内容是相同的,或者它是否已被更改?是否可能有一些校验和,我们可以从这两个文件中生成并进行比较。

如果没有这样的工具存在,哪种环境最适合创建它? - 可以在VB.NET和/或C#中完成吗?

谢谢。

此前一篇文章涉及同一问题,但不提供我们需要的那种答案。 C# - Hash contents of MS Office documents without metadata

回答

0

有趣的话题。 我们如何识别代表内容的容器内的组件部分?

,你需要评估每个内容文件的DOCX内。请注意,docx中的文件是使用deflate压缩的。所以你可能不得不夸大它们。这不仅是document.xml和document.xml.rels文件,还包括: - 标题xml文件(可以多于1) - 标题.rels文件 - 页脚xml文件(也是多个文件) - 页脚的.rels文件) - 媒体文件(含图片)

你甚至可以检查core.xml文件,如果的SharePoint性能降级改变如标题字段。

总之,您不能比较docx级别的docx文件。您需要解压缩它们并比较(使用例如CRC32或MD5)每个“内容”文件。

我不知道提供此功能的实用程序。

注意:如果您只是需要将文件上传到SharePoint进行归档,那么将它们放入单独的zip文件中可能是另一种选择。如果您只需存储内容并且不希望用户进行任何更改,则这当然只是一种选择。

Paul

相关问题