加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 从ASP .Net下载文件时,文本文件会附加HTML内容

发布时间:2020-12-16 06:31:27 所属栏目:asp.Net 来源:网络整理
导读:我创建了一个页面,允许用户使用FileUpload Control将文件上传到服务器并使用此代码处理其事件 Sub SaveAttachment() Dim root As String = "C:temp" Dim filename As String = FileUpload1.FileName Dim SaveName As String = root filename FileUpload1.S
我创建了一个页面,允许用户使用FileUpload Control将文件上传到服务器并使用此代码处理其事件

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等?

解决方法

确保通过在Response.WriteFile(文件路径)之后调用Response.End()来结束您的响应,否则您的表单将附加到流并发送到客户端.

它也会影响其他文件,但很可能只会在文件末尾被视为垃圾并被各自的应用程序忽略.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读