Httppotedfile.fileName - diferente de IE
-
23-08-2019 - |
Pergunta
Quando eu carrego um arquivo em um site usando o controle ASP: Arquivo, a propriedade FileName é diferente no IE e no Firefox. No Firefox, ele apenas fornece o nome do arquivo, mas o IE fornece o caminho completo para o arquivo.
Eu trabalhei em torno disso adicionando o código:
Dim FileName As String = file.FileName
If FileName.LastIndexOf("\") > 0 Then
FileName = FileName.Substring(FileName.LastIndexOf("\") + 1)
End If
Mas não sei por que isso seria diferente entre os diferentes navegadores. Alguém sabe a razão para isso?
Obrigado.
Solução
Esta é uma preocupação de segurança/privacidade, o Firefox/Mozilla está fazendo certo e você não terá uma maneira de obter o caminho completo sem um suplemento, applet, Silverlight, Flash ou algum outro mecanismo.
Aqui estão mais informações sobre a posição de Mozilla:
https://developer.mozilla.org/en/updating_web_applications_for_firefox_3
Veja a seção sobre Alterações de segurança-> Campos de upload de arquivos
Espero que o IE siga o exemplo, por isso temos um ambiente consistente e seguro.
Outras dicas
Uma solução simples para este testado no IE e Chrome
new FileInfo(myHttpPostedFileBase.FileName).Name
Isso garantirá que você sempre obtenha apenas o nome do arquivo, mesmo que o caminho esteja incluído.
No IE8, esse comportamento mudou e apenas passará o nome do arquivo, não o caminho completo. ;-)
Detalhes e link para a postagem do blog do IE discutindo a mudança no IE8:http://blogs.msdn.com/b/webtopics/archive/2009/07/27/uploading--file-using-fileupload-control-dails-in-ie8.aspx
Aplicativos para o servidor que desejam analisar o nome do arquivo deve verificar, mas não Espero Haverá barras de barriga no nome do arquivo.
IE8 Substituição de configuração do usuário:http://blogs.msdn.com/blogfiles/webtopics/windowslivewriter/uploadingafileusingfileuploadcontrolfail_167/clip_image002_2.jpg
Você também pode usar o path.getfilename (file.filename) que retornam apenas o nome do arquivo. Exemplo:
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"