当我使用aws .net sdk将docx,xlsx或pptx上传到amazon S3时,文件上传得很好,我可以直接从S3查看文件,没有任何问题。但是当我使用C#在ASP.net中下载文件时,我在打开文件时收到一条警告消息(见下文):
“Excel在test.xlsx中找到了不可读的内容。你想恢复这个工作簿的内容吗?”如果我单击是,我可以看到文档中的所有内容。
同样我也收到了.docx文件的警告信息。
这是我正在使用的C#代码:
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
Response.OutputStream.Write(Content, 0, Content.Length);
Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();
更新:当我在Windows窗体应用程序中下载文件时,它运行正常,问题出在web应用程序上。
我做错了什么?
请帮忙......
答案 0 :(得分:0)
需要更多信息来解决这个问题。您提供的代码段看起来不错。问题似乎在您的代码中的其他地方......例如,您在“内容”中加载了什么?
此外,如果你尝试上传和下载一个简单的文本文件,看看会附加什么类型的数据会有所帮助。
答案 1 :(得分:0)
如果Content
是从byte[]
创建的MemoryStream
,请确保您拨打.ToArray()
而不是.GetBuffer()
来获取它。如果使用.GetBuffer()
,则可能会在结尾处获得额外的字节,这可能是Office文件格式可能不喜欢的。您尝试过的其他文件类型可能更容忍他们最终没有预料到的额外数据。