Question

Quand je télécharge un fichier sur un site en utilisant l'ASP: le fichier de contrôle de la propriété FileName est différent dans IE et Firefox. Dans Firefox, il fournit simplement le nom du fichier, mais IE fournit le chemin complet du fichier.

Je travaille autour de ce en ajoutant le code:

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

Mais je ne sais pas pourquoi ce serait différent entre les différents navigateurs. Est-ce que quelqu'un sait la raison?

Merci.

Était-ce utile?

La solution

Ceci est un titre / souci de confidentialité, firefox / mozilla fait à droite et vous n'obtenir un moyen d'obtenir le chemin complet sans, applet add-in, silverlight, flash ou un autre mécanisme.

Voici plus d'informations sur la position de Mozilla:

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

Voir la section Sécurité Modifications-> champs de téléchargement de fichier

J'espère que IE suivra donc nous avons un environnement cohérent et sécurisé.

Autres conseils

Une solution simple pour cela testé dans IE et Chrome

new FileInfo(myHttpPostedFileBase.FileName).Name

Cela vous permettra de toujours obtenir juste le nom du fichier, même si le chemin est inclus.

Dans IE8, ce comportement a changé et il passera seul le nom du fichier, pas le chemin complet. ; -)

Détails et lien vers le blog IE discuté du changement dans IE8: http://blogs.msdn.com/b/webtopics/archive/2009/07/27/uploading-a-file-using-fileupload-control-fails-in-ie8.aspx

Serverside apps qui cherchent à analyser le nom de fichier doit vérifier, mais pas attendre qu'il y ait dans le nom du fichier antislashs.

paramètre utilisateur IE8 override: http://blogs.msdn.com/blogfiles/webtopics/WindowsLiveWriter/ UploadingafileusingFileUploadcontrolfail_167 / clip_image002_2.jpg

Vous pouvez également utiliser Path.GetFileName (File.FileName) qui renvoie le nom seul fichier. Exemple:

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"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top