Por que os arquivos .docx estão sendo corrompidos ao baixar de uma página ASP.NET?
Tenho o seguinte código para levar anexos de página ao usuário:
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();
}
O problema é que todos os arquivos suportados funcionam corretamente (jpg, gif, png, pdf, doc, etc.), mas os arquivos .docx, quando baixados, estão corrompidos e precisam ser corrigidos pelo Office para serem aberto
No começo, eu não sabia se o problema era descompactar o arquivo zip que continha o .docx; portanto, em vez de colocar o arquivo de saída apenas na resposta, salvei-o primeiro e o arquivo foi aberto com êxito. problema deve estar na resposta escrita.
Você sabe o que pode estar acontecendo?