我制作了一个页面,允许用户使用 FileUpload 控件将文件上传到服务器并使用此代码处理其事件
Sub SaveAttachment()
Dim root As String = "C:\temp\"
Dim filename As String = FileUpload1.FileName
Dim SaveName As String = root & filename
FileUpload1.SaveAs(SaveName)
End Sub
效果很好,我能够看到文件被上传,并且文件的内容是完整的(正是用户上传的文件的副本)。
现在为了将文件下载回用户(稍后),我编写了另一个页面,该页面从 Request.Parameter(“文件”)读取文件名并获取该文件以下载给用户。我已经编写了 Download.aspx 页面来处理 ASP 部分中的下载(没有使用后面的代码):
<%@ Import Namespace="System.IO"%>
<script language="VB" runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
Dim root As String = "C:\temp\"
Dim filepath As String = Request.Params("file")
If Not filepath Is Nothing Then
filepath = root & filepath
If File.Exists(filepath) And filepath.StartsWith(root) Then
Dim filename As String = Path.GetFileName(filepath)
Response.Clear()
Response.ContentType = "application/octet-stream"
Response.AddHeader("Content-Disposition", _
"attachment; filename=""" & filename & """")
Response.Flush()
Response.WriteFile(filepath)
End If
End If
End Sub
</script>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</form>
我尝试上传图像文件,然后再次下载它们,它工作正常。但是,只有当我上传文本文件时,我才会获得附加了一些 HTML 内容的该文件的内容。
这是我上传的示例文件
Here is my sample text file
It consists of 3 lines only
这是我下载回来时的文件
Here is my sample text file
It consists of 3 lines only
<form name="form1" method="post" action="FileDownload.aspx?file=sample_file.txt" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE5NTU5ODQyNTBkZNCYbOVZJDRUAOnIppQYkwHUSlb0" />
</div>
<span id="Label1">Label</span>
</form>
我去了服务器上的文件并打开它以确保附加的 HTML 内容在那里,但正如我所说,文件已完美上传。只有当它被下载时,它才会包含附加的 HTML 内容。
我做错了什么?我能做些什么来让这个额外的 HTML 代码消失?为什么这个问题只影响文本文件,而不影响图像、EXE、XLS、DOC 等?