2017-08-17 1 views
0

Ich habe einige Dateien in s3 gespeichert und ich muss herausfinden, das Datum, als Datei wurde genau erstellt. Sobald ich die Datei herunterlade, wird ein neuer created_at Zeitstempel für die Datei generiert, aber ich kann den richtigen created_at Zeitstempel sehen, wenn ich ihn in Excel oder PDF öffne.Get Correct createdAt und modifiedDatum für eine Datei in s3 gespeichert

Ich verwende node.js für Dateien aus s3 holen und einige Bibliotheken benötigen diese Daten, um mich zu geben.

Ich habe bereits versucht xslx, fs, winattr und aws-sdk.

+1

darüber nachdachte verwenden, wenn sie bestimmte Arten von Dokumenten sind Wie pdf und xlsx können die ursprünglichen created_at-Statistiken in diesen Dateien selbst und nicht als Dateimetadaten gespeichert werden. Möglicherweise müssen Sie Ihre PDF/Excel-Dokumente analysieren, um das zu tun, wonach Sie suchen. Meine Antwort könnte nicht das tun, was Sie brauchen. –

+0

Sie haben Recht, können Sie etwas bereitstellen, um 'docx' Datei-Metadaten zu analysieren? –

Antwort

1

Für lokale Dateien, z.B. Nachdem Sie die Dateien heruntergeladen haben, können Sie die Funktion Node JS fs.stat verwenden.

Dadurch werden Sie die Dateistatistiken/Metadaten Details geben, wie sie durch das Betriebssystem gespeichert sind Sie node.js auf ausführen.

siehe https://nodejs.org/api/fs.html#fs_fs_stat_path_callback

Wenn Sie nach dem Datum suchen die Datei auf Amazon S3 erstellt wurde, dann können Sie das Objekt HEAD Rest Anfrage verwenden.

Siehe Amazon S3 Object HEAD Documentation für weitere Informationen über das.

Es scheint Last-Modified ist die letzte Änderung oder das Erstellungsdatum eines Objekts, je nachdem, was zuletzt kam. Dadurch erhalten Sie möglicherweise die Granularität, die Sie benötigen. Wenn nicht, können Sie wahrscheinlich den HEAD-Befehl in Kombination mit den Versionsbefehlen verwenden, um das Erstellungsdatum herauszufinden. Suchen Sie die erste Version und rufen Sie dann das Last-Modified für die erste Version für das Erstellungsdatum ab.

Siehe Amazon S3 Object HEAD Versioning für weitere Details.

PDF-Dateien speichern ihren Zugriff, erstellte und so weiter Metadaten-Eigenschaften intern als Teil ihres Formats. Sie können diese Details mit https://github.com/Gottox/node-pdfutils

Excel-Dateien und die meisten Microsoft-Dokumente tun etwas ähnliches analysieren, können Sie die erstellte Eigenschaft der Arbeitsmappe lesen können https://www.npmjs.com/package/xlsx

+0

Danke für die 'node-pdfutils', aber ich habe alles andere versucht, einschließlich fs, und Kopfanfragen, und ich weiß, warum sie nicht funktionieren. –

+0

Eine S3 'HEAD'-Objektanforderung gibt einen' Last-Modified'-Header zurück, der nach Konsistenz mit dem Standard-HTTP-Verhalten benannt wurde. Dies ist in der Tat das Datum/die Zeit, zu der das Objekt in S3 geschrieben wurde ("erstellt"), da S3-Objekte unveränderlich sind und nach dem Hochladen in einen Bucket nicht wirklich "modifiziert" werden können. Das Aktualisieren von Objektmetadaten aktualisiert die Metadaten tatsächlich nicht, sondern überschreibt das Objekt mit einer Kopie von sich selbst und den neuen Metadaten. Dies setzt 'Last-Modified' auf" now ", aber es wurde nicht wirklich modifiziert - es ist technisch ein neues Objekt mit einem neuen Erstellungsdatum in S3, eine Kopie des alten. –

+0

Nützliche Infos für das OP genau dort. Ich habe noch nie Amazon S3 benutzt, ich bin einfach von der Dokumentation verschwunden. @DileepChirumamila Microsoft-Dokumentformate, die auf. * ​​X enden, z. .docx oder .xlsx sind XML-formatiert. Im schlimmsten Fall öffnen Sie das Dokument in einer Notepad-Anwendung, suchen Sie den Knoten mit dem Erstellungsdatum und parsen Sie dies manuell mit einem XML-Parser aus. –

Verwandte Themen