HttpPostedFile.FileName - Diverso da IE
-
23-08-2019 - |
Domanda
Quando carico un file a un sito utilizzando l'ASP: file di controllo la proprietà FileName è diverso in IE e Firefox. In Firefox, esso fornisce solo il nome del file, ma IE fornisce il percorso completo del file.
Ho lavorato intorno a questo aggiungendo il codice:
Dim FileName As String = file.FileName
If FileName.LastIndexOf("\") > 0 Then
FileName = FileName.Substring(FileName.LastIndexOf("\") + 1)
End If
Ma io non sono sicuro perché questo sarebbe diversa tra i vari browser. Qualcuno sa il motivo di questo?
Grazie.
Soluzione
Questa è una sicurezza / privacy preoccupazione, firefox / mozilla sta facendo bene e non sarà possibile ottenere un modo per ottenere il percorso completo senza un add-in, applet, Silverlight, flash o qualche altro meccanismo.
Qui è più informazioni posizione di Mozilla:
https://developer.mozilla.org/en/Updating_web_applications_for_Firefox_3
Vedere la sezione Sicurezza Revisioni-> campi di upload di file
Spero IE farà altrettanto quindi abbiamo un ambiente coerente e sicuro.
Altri suggerimenti
Una semplice soluzione per questo testato in IE e Chrome
new FileInfo(myHttpPostedFileBase.FileName).Name
Questo farà in modo da ottenere sempre solo il nome del file, anche se il percorso è incluso.
In IE8, questo comportamento è cambiato e sarà solo passare il nome del file, non il percorso completo. ; -)
Dettagli e link al post sul blog di IE discutere il cambiamento di IE8: http://blogs.msdn.com/b/webtopics/archive/2009/07/27/uploading-a-file-using-fileupload-control-fails-in-ie8.aspx
Serverside apps cercando di analizzare fuori il nome del file deve verificare, ma non aspettarsi che ci sia backslash nel nome del file.
di override impostazione utente IE8: http://blogs.msdn.com/blogfiles/webtopics/WindowsLiveWriter/ UploadingafileusingFileUploadcontrolfail_167 / clip_image002_2.jpg
È inoltre possibile utilizzare Path.GetFileName (File.FileName) che restituire solo il nome del file. Esempio:
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"