HttpPostedFile.FileName - Verschiedene von IE
-
23-08-2019 - |
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.
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"