HttpPostedFile.FileName - différent de l'IE
-
23-08-2019 - |
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.
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"