我有一个MVC 3应用程序,允许用户上传带有一些数据输入内容的文件。我已经设置了一个控制器来获取这些文档并将其缓存到用户身上,如此
[OutputCache(Duration = 1200, VaryByParam = "id")]
public ContentResult GetNarrative(int id)
{
Response.Clear();
Response.BufferOutput = true;
Response.ContentType = "application/octet-stream";
var narrative = attachRepo.GetNarrative(id);
if (narrative == null || narrative.Narrative == null)
return null;
Response.AddHeader("Content-Disposition",
string.Format("attachment;filename={0}",
Server.UrlEncode(narrative.Filename)));
Response.OutputStream.Write(narrative.Narrative.ToArray(),
0, narrative.Narrative.ToArray().Length);
Response.OutputStream.Flush();
return Content("");
}
这很好用,有趣的是,当我有输出缓存行时,我的firefox下载对话框看起来像这样
然而,当我注释掉输出缓存行时,它看起来像预期的对话框
这不是一个真正的阻塞问题,因为它在IE中运行得很好,Chrome默认只下载,但我很好奇为什么会发生这种情况,如果有人经历过这个并且解决了它。
谢谢!
答案 0 :(得分:0)
我发现firefox忽略了附件中的文件名。它倾向于使用他的URL来设置文件名。
尝试放在URL的末尾?filename.docx
看看它是否能解决问题。