У меня есть следующий способ загрузки файла при посещении страницы. Проблема заключается в том, что он возвращает файлы с добавленными байтами, что в зависимости от типа файла может привести к его повреждению. У меня есть следующий метод:
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
размером 177030
с использованием вышеуказанного метода загруженный файл имеет размер 177710
и становится поврежденным (но исправимым) в Excel. Кажется, всегда добавляется 680
байт.
Я пытался заменить TransmitFile
на WriteFile
. Установка длины в TransmitFile
для фактического размера файла, который правильно получен из FileInfo
. Я также просмотрел разные файлы и попытался запустить его как локально на сервере, так и локально; все с одинаковыми результатами.