Frage

Wenn ich eine Datei auf eine Website hochladen, um das ASP: Die Datei der Filename-Eigenschaft ist in IE und Firefox anders steuern. In Firefox, bietet es nur den Namen der Datei, aber IE bietet den vollständigen Pfad zur Datei.

Ich habe um diese gearbeitet durch den Code hinzufügen:

Dim FileName As String = file.FileName
If FileName.LastIndexOf("\") > 0 Then
    FileName = FileName.Substring(FileName.LastIndexOf("\") + 1)
End If

Aber ich bin nicht sicher, warum das zwischen den verschiedenen Browsern unterschiedlich sein würde. Kennt jemand den Grund dafür?

Danke.

War es hilfreich?

Lösung

Dies ist eine Sicherheit / Datenschutz Sorge ist, firefox / mozilla ist es richtig zu machen, und Sie werden nicht einen Weg, um den vollständigen Pfad ohne einen Add-in, Applet, Silverlight, Flash-Speicher oder einem anderen Mechanismus bekommen.

Hier gibt es mehr Informationen über Mozilla Haltung:

https://developer.mozilla.org/en/Updating_web_applications_for_Firefox_3

finden Sie im Abschnitt Sicherheit Änderungen-> Datei-Upload-Felder

Ich hoffe, IE folgen werden, so dass wir eine konsistente und sichere Umgebung haben.

Andere Tipps

Eine einfache Abhilfe für diesen getestet in IE und Chrome

new FileInfo(myHttpPostedFileBase.FileName).Name

Dies wird sicherstellen, dass Sie immer nur die Dateinamen erhalten, auch wenn der Pfad enthalten ist.

In IE8 hat dieses Verhalten geändert, und es wird nur die Dateinamen übergeben, nicht den vollständigen Pfad. ; -)

Details und Link zu dem IE Blog post die Änderung in IE8 zu diskutieren: http://blogs.msdn.com/b/webtopics/archive/2009/07/27/uploading-a-file-using-fileupload-control-fails-in-ie8.aspx

Die Serverside apps sucht die Dateinamen zu analysieren, sollten überprüfen, aber nicht erwartet gibt Schrägstriche im Dateinamen zu sein.

IE8 Benutzer Einstellung außer Kraft setzen: http://blogs.msdn.com/blogfiles/webtopics/WindowsLiveWriter/ UploadingafileusingFileUploadcontrolfail_167 / clip_image002_2.jpg

Sie können auch Path.GetFileName (File.FileName) verwenden, die nur Namen Datei zurück. Beispiel:

Dim File As HttpPostedFile = context.Request.Files("txtFile")
' let's FileName is "d:\temp\1.txt"
Dim FileName As String = Path.GetFileName(File.FileName)
' FileName will be "1.txt"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top