Tôi có này đoạn mã sau để đưa file đính kèm trang cho người sử dụng:Tại sao các tệp .docx bị hỏng khi tải xuống từ trang ASP.NET?
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();
}
Vấn đề là tất cả các file được hỗ trợ hoạt động đúng (jpg, gif, png, pdf, doc, vv), nhưng file .docx, khi tải xuống, bị hỏng và cần phải được Office cố định để mở. Lúc đầu, tôi không biết liệu sự cố có đang giải nén tệp nén chứa .docx hay không, vì vậy thay vì chỉ đặt tệp đầu ra vào phản hồi, trước tiên tôi đã lưu tệp đó và tệp đã mở thành công, vì vậy Tôi biết vấn đề nên được viết phản hồi.
Bạn có biết điều gì có thể xảy ra không?
này vấp tôi dậy khi xuất ra PDF. Hóa ra người xem PDF sẽ dung thứ rác bất ngờ sau khi kết thúc dữ liệu hợp lệ và tôi đã thêm HTML được hiển thị của trang vào mọi tệp PDF tôi đã gửi. Có thể giống với các định dạng tệp nhị phân khác, chúng không quan tâm đến dữ liệu không mong muốn được nối vào dữ liệu hợp lệ. – millimoose