c# - Response.BinaryWrite() 导致文件损坏
问题描述
将文件写入文件时,HttpResponse
文件已损坏。我正在写入的文件会在写入之前保存到光盘中。我已经测试过生成/保存的文件很好,只有在写入响应时。我已经使用多种文件类型(text
和excel
)进行了测试,并收到了同样的问题。使用 excel ( openXML
) 时,文件会在 Excel 修复后打开。通过记事本查看内容时文件中的错误是:
System.Threading.ThreadAbortException:线程被中止。在 System.Threading.Thread.AbortInternal() 在 System.Threading.Thread.Abort(Object stateInfo) 在 System.Web.HttpResponse.AbortCurrentThread() 在 SPAM.WEB.Reports.Wrapper.LaunchQuarterlyReportDownload() 在 C:\Use。 ......
我用来编写文件的代码是:
string fileDownloadPath = GetConfigValue("FileUploadPath");
string filePath = fileDownloadPath + BUSINESS.Business.QuarterlyAuditReport.getRecentQuarter() + ".xlsx";
BUSINESS.Business.QuarterlyAuditReport.GetSpreadSheet(filePath);
FileInfo fileInfo = new FileInfo(filePath);
MemoryStream memStream = new MemoryStream();
File.Open(filePath, FileMode.Open).CopyTo(memStream);
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = @"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + fileInfo.Name);
HttpContext.Current.Response.BinaryWrite(memStream.GetBuffer());
memStream.Dispose();
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
解决方案
推荐阅读
- google-chrome - 如何在没有 amp-ad 的情况下呈现 Amp 广告?
- html - 检测 Html 中的红线
- react-native - React-Native 与 Objective-c 的 ViewWillAppear 有什么相似之处?
- ios - 如果目标是普通类,则 UITapGestureRecognizer 无法正常工作
- php - 使用 magento2 在 url 中添加斜杠
- python - Python - 合并多个文件然后删除源文件时出错
- tfs - TFS 仪表板小部件用于显示不同 tfs 服务器的数据
- vue.js - Vue 过渡组的行为
- node.js - 等待 MongoDB 查询结果
- python-3.x - Python:列表中元素之间的最大差异