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.

È stato utile?

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"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top