TransmitFile 产生文件大小错误的损坏文件
TransmitFile yielding a corrupt files with wrong filesize
我有以下方法可以在访问页面时下载文件。问题是它似乎产生了带有添加字节的文件,根据文件类型可能会使文件损坏。我有以下方法:
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
例如,当使用上述方法下载大小为 177030
的 xlsm
文件时,下载的文件大小为 177710
并在以下位置损坏(但可修复) Excel。它似乎总是添加 680
字节。
我试过用 WriteFile
替换 TransmitFile
。将 TransmitFile
中的长度设置为从 FileInfo
中正确检索的实际文件大小。我还查看了不同的文件,并且在服务器本地和本地都尝试了 运行;结果都一样。
方法末尾缺少Response.Flush()
我有以下方法可以在访问页面时下载文件。问题是它似乎产生了带有添加字节的文件,根据文件类型可能会使文件损坏。我有以下方法:
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
例如,当使用上述方法下载大小为 177030
的 xlsm
文件时,下载的文件大小为 177710
并在以下位置损坏(但可修复) Excel。它似乎总是添加 680
字节。
我试过用 WriteFile
替换 TransmitFile
。将 TransmitFile
中的长度设置为从 FileInfo
中正确检索的实际文件大小。我还查看了不同的文件,并且在服务器本地和本地都尝试了 运行;结果都一样。
方法末尾缺少Response.Flush()