8 Stimmen

Wie kann ich einen Dateityp aus einem Blob/Filestream identifizieren?

Wir haben vor längerer Zeit eine Anwendung von der Stange gekauft, die in der Lage ist, Dateien als Blob in SQL Server zu speichern. Wir haben festgestellt, dass sich die Größe der Datenbank in den letzten sechs Monaten mehr als verdoppelt hat, weil eine Abteilung dieses Blob-Feld immer häufiger verwendet. Infolgedessen ist die Anwendung schmerzhaft langsam geworden.

Ich wurde damit beauftragt, das Blob-Feld aus der Datenbank zu entfernen und die Datei auf dem eigentlichen Dateisystem zu speichern. Leider speichert die Anwendung nicht, um welchen Dateityp es sich in der Datenbank handelt. Ich kann die Datei zwar so lesen, wie sie in der Datenbank vorhanden ist, aber ich weiß nicht, unter welcher Erweiterung ich die Datei speichern soll. Der Support der Anwendung unterstützt diese Version der Software nicht mehr und will mit uns nicht über die Extraktion der Daten sprechen. Leider haben wir keinen Zugang zu ihrem Quellcode.

Für Vorschläge wären wir sehr dankbar! Vielen Dank im Voraus!

7voto

BlackTigerX Punkte 5824

Sie können sich die ersten paar Bytes ansehen und für die gängigsten Dateitypen herausfinden

http://www.garykessler.net/library/file_sigs.html

2voto

Paul Sonier Punkte 37609

Speichern Sie es nicht als einen beliebigen Typ. Speichern Sie sie als Datei ohne Erweiterung. Wenn Sie nicht wissen, was es ist, täuschen Sie es nicht vor. Wenn die Anwendung, die es gespeichert hat, es anfordert, geben Sie es aus dem Dateisystem auf dieselbe Weise zurück, wie es aus der Datenbank zurückgegeben werden würde: als Binärdaten. Der Datenbank ist es egal, um welche Art von Daten es sich bei dem Binärobjekt handelt; das sollten Sie auch nicht.

2voto

Rob Boek Punkte 1938

Sie könnten versuchen, TriD zu verwenden http://mark0.net/soft-trid-e.html

Es scannt die Dateien und versucht, die Erweiterung zu bestimmen.

1voto

M4N Punkte 92235

Sie könnten die Funktion FindMimeFromData() in UrlMon.dll (unter Verwendung von pinvoke) verwenden.

Ver diese Seite für ein Beispiel und dies MSDN-Seite für die Dokumentation der Funktion.

0voto

Eric Punkte 18971

Woher wissen Sie, dass diese Informationen für Menschen lesbar sind?

Dateierweiterungen dienen dazu, eine bestimmte Software zum Öffnen der Datei zuzuordnen, so dass bei einem Doppelklick auf eine .txt-Datei diese von notepad.exe bearbeitet wird.

Wenn Sie sie nur in das Dateisystem schreiben, um die Datenbank zu entladen, ist keine spezielle Erweiterung erforderlich. Wenn Sie eine Software damit verknüpfen wollen, dann verwenden Sie die entsprechende Erweiterung

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X