I have the following method available to download a file when a page is visited. The issue have is that it seems to yield files with added bytes back, that based on the type of file can make it corrupt. I have the following method:
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
For an example when an xlsm file with the size 177030 is downloaded using the above method the downloaded file has a size of 177710 and becomes corrupt (but repairable) in Excel. It always seems to add 680 bytes.
I've tried substituting TransmitFile with WriteFile. Setting the length in TransmitFile to the actual filesize that is correctly retrieved from FileInfo. I've also looked at different files and I've tried running it both locally on server and locally; all with the same results.