我们有一个图像文件下载操作。 代码是
public virtual FileResult Attachment(Guid Id)
{
...code for attachment..
Response.AddHeader("content-disposition", "attachment; filename=" + attachment.FileName);
Response.AddHeader("content-type", attachment.ContentType);
Response.AddHeader("cache-control", "must-revalidate");
return File(attachment.Content, attachment.ContentType);
}
当我们测试此操作时,我们总是会收到损坏的文件。我将损坏的文件与原始用户notepad ++进行了比较,发现文件中添加了一个新的行字符。我删除了记事本++中的新行,图像已修复。
我们检查了附件的内容,我们确信内容是正确的。
我们正在运行.net mvc 3.我们对png的内容类型是“image / png”
答案 0 :(得分:1)
在添加自定义标头之前(或之后)检查响应中已填充的其他标头。可能是因为您正在获得导致问题的一些无关的标题。
可能就像调用ClearHeaders
一样简单Live Http Headers firefox插件等工具也可能会有所帮助。
答案 1 :(得分:1)
Fiddler结果(即fiddler2.com)并查看标题和结果。您也可以保存结果并测试文件。换行符是开头还是结尾?如果是开始,它可能是标题。如果它最后,你运行任何可能添加空结果的ActionFilters(或者你认为)实际上是一个新增的新行吗?用另一个文件测试它 - 结果相同吗?
如果可能的话,在另一个系统上测试 - 结果相同吗?