2010-03-14 5 views
5

Im Moment bekomme ich Dateierweiterung der Datei wie:Erste Erweiterung der Datei in Fileupload Steuerung

string fileExt = System.IO.Path.GetExtension(filUpload.FileName); 

Aber wenn der Benutzer die Dateierweiterung der Datei ändern (zum Beispiel Benutzer kann mit der „Test umbenennen. txt "to" test.jpg "), ich kann die echte Erweiterung nicht bekommen. Was ist die Lösung ?

Antwort

5

Sie scheinen zu fragen, wenn Sie Dateityp, von seinem Inhalt zu identifizieren.

Die meisten Lösungen versuchen tatsächlich die Dateierweiterung, aber es gibt zu viele verschiedene Dateitypen, um zuverlässig identifiziert zu werden.

Die meisten Ansätze verwenden die ersten paar Bytes der Datei, um festzustellen, was sie sind.

Here ist eine Liste, here andere.

Wenn Sie nur über Text vs binär besorgt sind, siehe this SO Frage und Antworten.

Siehe this SO Antwort für die Überprüfung, ob eine Datei ein JPG ist - dieser Ansatz kann erweitert werden, um andere Dateikopfzeilen wie in den ersten beiden Links in dieser Antwort zu verwenden.

1

Worin auch immer der Benutzer die Dateiendung umbenennt, das ist die eigentliche Dateierweiterung.

Sie sollten nie von der Dateierweiterung abhängig sein, um Ihnen zu sagen, was sich in der Datei befindet, da sie umbenannt werden kann.

Siehe „how can we check file types before uploading them in asp.net?

1

Es gibt keine Möglichkeit, die "echte" Dateierweiterung zu erhalten - die Dateierweiterung, die Sie aus dem Dateinamen erhalten, ist die echte. Wenn es sich um Dateiinhalte handelt, können Sie den Inhaltstyp mit der Eigenschaft .ContentType abrufen und sicherstellen, dass es sich um einen Inhaltstyp handelt, den Sie erwarten - z. image/jpg.

Verwandte Themen