问题是所有支持的文件都能正常运行(jpg,gif,png,pdf,doc等),但.docx文件,当我下载时,它说损坏了,它们需要由Office修复才能成为打开。
这是我的代码:
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
Response.BinaryWrite(RptBytes);
stream.Dispose();
Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();
我从其他网站获得了解决方案,
即
事实证明,docx格式需要在Response.BinaryWrite之后立即使用Response.End()而不是HttpContext.Current.ApplicationInstance.CompleteRequest()
Why are .docx files being corrupted when downloading from an ASP.NET page?
它工作正常,但是当Thread被中止时,Response.End抛出异常。
答案 0 :(得分:3)
将我的评论复制到答案:
我的猜测是你的所有下载都已损坏,除了一些文件格式比其他文件格式更宽容。 jpg或gif上的错误字节可能不会被显示图像的软件注意到。但是,docx文件实际上是zip文件,它们对损坏的字节更严格。
我要做的是:
然后通过Response
BinaryWrite
//将文件读取为字节数组 byte [] RptBytes = File.ReadAllBytes(pathToFile);
然后按照https://stackoverflow.com/a/15869303/740639
中的代码操作我认为您的问题是如何处理Response
。您可能只需按照该答案中的代码跳过整个字节数组部分。