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

时间:2017-07-02 17:25:59

标签: asp.net .net vb.net webforms web-controls

  

我在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>

CodeBehind文件

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 个答案:

答案 0 :(得分:1)

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

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

enter image description here

enter image description here

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

enter image description here