Fileupload 在 ASP.NET WebForm 中的 Microsoft IE 和 Microsoft Edge 浏览器中不起作用
Fileupload is not working in Microsoft IE and Microsoft Edge Browser in ASP.NET WebForm
I have a code in VB.NET just to upload a file in ASP.NET WebForm. It is working perfectly in Firefox, Chrome and Safari. But the same code is unable to save the uploaded file in Microsoft Internet Explorer and Microsoft Edge, although there is no any error or exception in the application. I need someone's help to fix the issue. My .aspx code and code-behind file's code are as below:
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
主要是因为 Internet Explorer 和 Microsoft Edge 给出了完整的文件路径,而在 Chrome 中,Firefox 和 Safari 只给出了唯一的文件名。我附上了下面的截图,通过使用 Path.GetFileName 方法我只得到文件名,不管它只给出文件名还是完整路径。
第一张图片是从 Internet Explorer 和 Microsoft Edge 上传文件时,第二张图片来自 Chrome、Firefox 和 Safari
我们也可以在浏览器设置中明确 enable/disable 仅文件名或完整路径。例如,下面我附上了 Internet Explorer 的屏幕截图,我们可以在其中启用或禁用 [=25=].
I have a code in VB.NET just to upload a file in ASP.NET WebForm. It is working perfectly in Firefox, Chrome and Safari. But the same code is unable to save the uploaded file in Microsoft Internet Explorer and Microsoft Edge, although there is no any error or exception in the application. I need someone's help to fix the issue. My .aspx code and code-behind file's code are as below:
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
主要是因为 Internet Explorer 和 Microsoft Edge 给出了完整的文件路径,而在 Chrome 中,Firefox 和 Safari 只给出了唯一的文件名。我附上了下面的截图,通过使用 Path.GetFileName 方法我只得到文件名,不管它只给出文件名还是完整路径。
第一张图片是从 Internet Explorer 和 Microsoft Edge 上传文件时,第二张图片来自 Chrome、Firefox 和 Safari
我们也可以在浏览器设置中明确 enable/disable 仅文件名或完整路径。例如,下面我附上了 Internet Explorer 的屏幕截图,我们可以在其中启用或禁用 [=25=].