【发布时间】:2020-09-09 02:17:34
【问题描述】:
我正在尝试使用 ASP.Net 将文件写入输出响应流。当我下载文件时,我收到Errors were found opening .zip file. You can extract files from this archive, but other programs may not be able to open it. Do you want to try fixing the problems? 错误。但是,我可以取消此操作并正确打开 zip 文件。
我做错了什么?
ASP.Net\C# 代码:
var pathToFile = "c:\abc.zip";
string fileName = Path.GetFileName(pathToFile);
byte[] buffer;
using (var fileStream = new FileStream(pathToFile, Filemode.open))
{
buffer = new byte[fileStream. Length];
fileStream.Read(buffer, 0, (int)fileStream.Length);
}
Response.Clear();
Response.Buffer = true;
Response.AppendHeader("content-disposition", string.Format(@"attachment; filename={0}.zip", filename));
Response.ContentType = "application/zip";
Response.AppendHeader("content-length", buffer.Length.ToString());
Response.WriteFile(pathToFile);
【问题讨论】:
-
您可能没有阅读完整的文件。也无需将其存储在缓冲区中 - 您可以直接写入响应。
-
我之前直接写入响应,而没有在响应标头中附加内容长度,但遇到了同样的错误。如何确保“我已阅读完整文件”?