Fileupload 在 Microsoft IE 和 ASP.NET WebForm 中的 Microsoft Edge 浏览器中不起作用

Posted

技术标签:

【中文标题】Fileupload 在 Microsoft IE 和 ASP.NET WebForm 中的 Microsoft Edge 浏览器中不起作用【英文标题】:Fileupload is not working in Microsoft IE and Microsoft Edge Browser in ASP.NET WebForm 【发布时间】:2017-12-06 00:05:48 【问题描述】:

我在 VB.NET 中有一个代码,只是为了在 ASP.NET WebForm 中上传一个文件。它在 Firefox、Chrome 和 Safari 中运行良好。但是相同的代码无法将上传的文件保存在 Microsoft Internet Explorer 和 Microsoft Edge 中,尽管应用程序中没有任何错误或异常。我需要有人帮助解决这个问题。我的 .aspx 代码和代码隐藏文件的代码如下:

WebForm1.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

【问题讨论】:

【参考方案1】:

这主要是因为 Internet Explorer 和 Microsoft Edge 提供了完整的文件路径,而在 Chrome、Firefox 和 Safari 中只提供了唯一的文件名。我附上了下面的截图,通过使用 Path.GetFileName 方法,我只获取文件名,无论它只给出文件名还是完整路径。

第一张图片是从 Internet Explorer 和 Microsoft Edge 上传文件时,第二张图片来自 Chrome、Firefox 和 Safari

我们也可以在浏览器设置中显式启用/禁用仅文件名或完整路径。例如,下面我附上了 Internet Explorer 的屏幕截图,我们可以在其中启用或禁用“将文件上传到服务器时包含本地目录路径”。

【讨论】:

嗨,此设置不适用于我的 Edge 浏览器 @RahulTokase 此选项在 Edge 中对我不起作用,但在我的情况下,Path.GetFileName(...) 可以很好地获取文件名,而与完整路径或文件名无关。 在 IE 10 上正常。谢谢。

以上是关于Fileupload 在 Microsoft IE 和 ASP.NET WebForm 中的 Microsoft Edge 浏览器中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

FileUpload1 在部分浏览器中实现多选

用fileupload上传图片,怎么获取上传后图片的相对路径

UpdatePanel 中的 FileUpload 控件而不刷新整个页面?

MSGraphMailbag - 使用 Microsoft Graph SDK 的 LargeFileUploadTask 上传大文件

如何让ajaxfileupload.js支持IE9,IE10,并可以传递多个参数

IE9 中的 DXIMageTransform.Microsoft.Matrix 模糊