Загрузка файла не работает в браузере Microsoft IE и Microsoft Edge в веб-форме ASP.NET

У меня есть код в VB.NET только для загрузки файла в ASP.NET WebForm. Он отлично работает в Firefox, Chrome и Safari. Но этот же код не может сохранить загруженный файл в Microsoft Internet Explorer и Microsoft Edge, хотя в приложении нет ни ошибки, ни исключения. Мне нужна чья-то помощь, чтобы решить проблему. Мой код .aspx и код файла кода программной части выглядят следующим образом:

Веб-форма1.ASPX

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="FileUploadTest.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:FileUpload ID="Uploader" runat="server" />
            <asp:Button ID="cmdUpload" runat="server" Text="Upload"  />
        </div>
    </form>
</body>
</html>

Файл кода программной части

Imports System.IO

Public Class WebForm1
    Inherits Page

    Dim uploadDirectory As String = "C:\Uploads\"
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Protected Sub cmdUpload_Click(sender As Object, e As EventArgs) Handles cmdUpload.Click
        Dim uniqueGuid As String = Guid.NewGuid.ToString

        Dim tmpUploadDirectory As String = uploadDirectory & "\" & uniqueGuid

        If Not Directory.Exists(tmpUploadDirectory) Then
            Directory.CreateDirectory(tmpUploadDirectory)
        End If

        For Each f As HttpPostedFile In Uploader.PostedFiles
            f.SaveAs(Path.Combine(tmpUploadDirectory, f.FileName))
        Next
    End Sub
End Class

person Simant    schedule 02.07.2017    source источник


Ответы (1)


В основном это произошло потому, что Internet Explorer и Microsoft Edge указывают полный путь к файлу, а в Chrome, Firefox и Safari просто указывают единственное имя файла. Я приложил скриншоты ниже, и с помощью метода Path.GetFileName я получаю только имена файлов, независимо от того, что он дает только имя файла или полный путь.

Первое изображение — при загрузке файла из Internet Explorer и Microsoft Edge, а второе — из Chrome, Firefox и Safari.

введите описание изображения здесь

введите описание изображения здесь

Мы также можем явно включить/отключить только имя файла или полный путь в настройках браузера. Например, ниже я прикрепил снимок экрана из Internet Explorer, где мы можем включить или отключить «Включить путь к локальному каталогу при загрузке файлов на сервер».

введите описание изображения здесь

person Simant    schedule 24.08.2017
comment
Привет. Этот параметр не работает для браузера Edge для меня. - person Rahul Tokase; 05.11.2018
comment
@RahulTokase Этот параметр не работает для меня в Edge, но в моем случае Path.GetFileName(...) работал нормально, чтобы получить имя файла независимо от полного пути или просто имени файла. - person Simant; 05.11.2018
comment
В IE 10 ок. Спасибо. - person ToanTV; 08.04.2021