Vic*_*ues 25 asp.net docx httpresponse
我有以下代码将页面附件带给用户:
private void GetFile(string package, string filename)
{
var stream = new MemoryStream();
try
{
using (ZipFile zip = ZipFile.Read(package))
{
zip[filename].Extract(stream);
}
}
catch (System.Exception ex)
{
throw new Exception("Resources_FileNotFound", ex);
}
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/unknown";
if (filename.EndsWith(".docx"))
{
Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
}
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
Response.BinaryWrite(stream.GetBuffer());
stream.Dispose();
Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
Run Code Online (Sandbox Code Playgroud)
问题是所有支持的文件都能正常工作(jpg,gif,png,pdf,doc等),但.docx文件在下载时已损坏,需要Office修复才能打开.
起初我不知道问题是解压缩包含.docx的zip文件,所以不是仅将输出文件放在响应中,而是先保存它,然后文件成功打开,所以我知道问题应该回应写作.
你知道会发生什么吗?
小智 31
我也遇到了这个问题,实际上找到了答案:http://www.aspmessageboard.com/showthread.php?t = 230778
事实证明,docx格式需要在Response.BinaryWrite之后立即使用Response.End().
| 归档时间: |
|
| 查看次数: |
39511 次 |
| 最近记录: |