获取正确createdAt和修改存储在S3中的文件的日期

问题描述:

我有很少的文件存储在S3中,我必须找出文件被准确创建的日期。只要我下载文件,就会为该文件生成新的created_at时间戳,但是当我以excel或pdf打开时,我能够看到正确的created_at时间戳。获取正确createdAt和修改存储在S3中的文件的日期

我使用node.js从s3获取文件,并需要一些库给我这些日期。

我已经试过xslx,fs,winattraws-sdk

+1

思考,如果他们是特定类型的文件工作簿的建立财产比如pdf和xlsx,那么原始的created_at统计信息可能会存储在这些文件中,而不是作为文件元数据。您可能需要解析您的pdf/excel文档才能完成您的工作。我的回答可能不会满足你的需求。 –

+0

你说得对,你能提供一些东西来解析'docx'文件元数据吗? –

对于本地文件,例如在你下载完文件后,你可以使用Node JS fs.stat函数。

这会为您提供文件统计信息/元数据详细信息,因为它们是由运行node.js的操作系统存储的。

看到https://nodejs.org/api/fs.html#fs_fs_stat_path_callback

如果你正在寻找的文件在Amazon S3上创建的,那么你可以使用对象头枕申请的日期。

有关更多信息,请参阅Amazon S3 Object HEAD Documentation

显示Last-Modified是对象的最后修改日期或创建日期,以最后一个为准。这可能会给你所需的粒度。如果不是的话,你可以将HEAD命令与版本控制命令结合起来来确定创建日期。找到第一个版本,然后获取创建日期的第一个版本的Last-Modified。

查看Amazon S3 Object HEAD Versioning了解更多详情。

PDF文件将其访问,创建等元数据属性作为其格式的一部分在内部存储。您可以使用https://github.com/Gottox/node-pdfutils

Excel文件和大多数微软的文档做类似的事情解析这些细节,你也许可以读取使用https://www.npmjs.com/package/xlsx

+0

感谢'node-pdfutils',但我尝试了其他所有包含fs和头部请求的东西,并且我知道他们为什么不起作用。 –

+0

一个S3'HEAD'对象请求返回一个'Last-Modified'头,这个头被命名为与标准HTTP行为一致。这实际上是对象写入S3(“已创建”)的日期/时间,因为S3对象是不可变的,在上传到存储桶后实际上不能“修改”。实际上,更新对象元数据不会更新元数据,而是会用自身副本以及新元数据覆盖对象。这将“Last-Modified”设置为“now”,但实际上并未进行修改 - 它在技术上是一个新对象,在S3中有一个新创建日期,是旧版本的副本。 –

+0

OP的有用信息就在那里。我从来没有使用亚马逊S3,我刚刚离开了文档。 @DileepChirumamila以。* x结尾的Microsoft文档格式,例如.docx或.xlsx是XML格式的。最糟糕的情况是,在记事本应用程序中打开文档,找到具有创建日期的节点,并使用XML解析器手动将此节点解析出来。 –