TransmitFile产生文件大小错误的损坏文件

时间:2019-05-17 12:52:15

标签: vb.net corruption transmitfile

访问页面时,我可以通过以下方法下载文件。问题在于,它似乎会产生添加了更多字节的文件,基于文件的类型可能会使文件损坏。我有以下方法:

Public Class GetImage
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'snipped unimportant code
        Dim fileSize = New FileInfo(filepath).Length
        Response.Clear()
        Response.AddHeader("content-length", fileSize.ToString())
        Response.ContentType = "application/octet-stream"
        Response.AppendHeader("content-disposition", "attachment; filename=" & DisplayName)
        Response.TransmitFile(filepath)
    End Sub
End Class

例如,使用上述方法下载大小为xlsm的{​​{1}}文件时,下载的文件大小为177030并在Excel中损坏(但可修复)。它似乎总是增加177710个字节。

我尝试用680代替TransmitFile。将WriteFile中的长度设置为从TransmitFile正确检索的实际文件大小。我还查看了不同的文件,并尝试在服务器上和本地运行它。全部具有相同的结果。

1 个答案:

答案 0 :(得分:0)

方法末尾缺少Response.Flush()