0

当我使用 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 应用程序上。

我究竟做错了什么?

请帮忙...

4

2 回答 2

0

需要更多信息来解决这个问题。您提供的代码片段看起来不错。问题似乎在您的代码中的其他地方......例如,您在“内容”中加载了什么?

此外,如果您尝试上传和下载一个简单的文本文件,以查看附加了哪些类型的数据,这将有所帮助。

于 2013-05-21T23:49:41.427 回答
0

如果Contentbyte[]从 a 创建的MemoryStream,请确保您正在调用.ToArray()而不是.GetBuffer()获取它。如果您使用.GetBuffer(),最后可能会得到额外的字节,这是办公文件格式可能不喜欢的。您尝试过的其他文件类型可能更能容忍他们最终没想到的额外数据。

于 2013-05-22T01:12:51.617 回答