Wie man doc, docx, pdf, xls und xlsx basierend auf dem Header der Datei identifiziert

8

Wie erkennt man doc, docx, pdf, xls und xlsx basierend auf Dateiheadern in C #? Ich möchte nicht auf die Dateierweiterungen weder MimeMapping.GetMimeMapping für diese als eine der beiden kann manipuliert werden.

Ich weiß, wie man den Header liest, aber nicht wissen, welche Kombination von Bytes kann sagen, wenn eine Datei ein doc, docx, pdf, xls oder xlsx ist. Irgendwelche Gedanken?

    
Bablu Dutt 23.03.2015, 13:17
quelle

3 Antworten

6

Diese Frage enthält ein Beispiel für die Verwendung der ersten Bytes einer Datei zur Bestimmung des Dateityps: Wie können Sie mit Hilfe von .NET den MIME-Typ einer Datei anhand der Dateisignatur und nicht der Erweiterung finden

Es ist ein sehr langer Post, also poste ich die relevante Antwort unten:

%Vor%     
Jaco 23.03.2015 14:37
quelle
4

Das Verwenden von Dateisignaturen ist nicht so durchführbar (da die neuen Office-Formate ZIP-Dateien sind und die alten Office-Dateien OLE CF / OLE SS-Container sind), aber Sie können C # -Code verwenden, um sie zu lesen und herauszufinden, was sie sind.

Für die neuesten Office-Formate können Sie die ZIP-Datei (DOCX / PPTX / XLSX / ...) mit System.IO.Packaging : Ссылка Auf diese Weise können Sie die ContentType des ersten Dokumententeils finden und daraus schließen.

Bei älteren Office-Dateien (Office 2003) können Sie diese Bibliothek verwenden, um sie anhand ihres Inhalts zu unterscheiden (beachten Sie, dass MSI- und MSG-Dateien dieses Dateiformat ebenfalls verwenden): Ссылка

Zum Beispiel, hier sind die Inhalte einer XLS-Datei:

Ich hoffe, das hilft! :)

Es hätte mir sicher geholfen, wenn ich diese Antwort früher gefunden hätte. ;)

    
user2173353 25.02.2016 10:58
quelle
0

Die Antwort von user2173353 ist die korrekteste, da das OP speziell Office-Dateiformate erwähnt hat. Ich mochte jedoch nicht die Idee, eine ganze Bibliothek (OpenMCDF) hinzuzufügen, nur um ältere Office-Formate zu identifizieren, also schrieb ich meine eigene Routine, um genau dies zu tun.

%Vor%

Zusätzliche Format-IDs können bei Bedarf hinzugefügt werden.

Ich habe dies auf .doc und .xls versucht, und es hat gut funktioniert. Ich habe nicht auf CFB-Dateien mit 4096 Byte Sektorgröße getestet, da ich nicht einmal weiß, wo diese zu finden sind.

Der Code basiert auf Informationen aus den folgenden Dokumenten:

rymdsmurf 18.01.2018 10:07
quelle

Tags und Links