2013-02-18 40 views
1

我有一个方法,一个控制器,它返回文件返回FileResult不拿起MIME类型IE9

public FileResult DownloadFile(int id) 
{ 
    var file = _repository.GetInidividualFile(id); 
    return File(file.FileBinary, file.ContentType, file.FileName); 
} 

File对象是回正确的返回值,但IE9不会拿起内容类型上。文件类型目前名单上有有:

'应用程序/ PDF'

'应用程序/ vnd.openxmlformats-officedocument.spreadsheetml.sheet'

'应用程序/ vnd.ms-Excel的

所有其他浏览器似乎工作正常,但IE似乎忽略了扩展名。我遇到的问题是,因为该文件没有被扩展下载,所以系统会提示用户选择打开文件的应用程序,但他们不知道。

我曾尝试在火狐,Chrome,Safari和Opera,一切都很好

这里的返回

debug

下面是从小提琴手显示输出显示值调试器视图内容类型:

HTTP/1.1 200 OK

服务器:ASP.NET DEVELOPME NT服务器/ 10.0.0.0

日期:星期二,2013年2月19日10点16分41秒GMT

X-ASPNET-版本:4.0.30319

X-AspNetMvc-版本:3.0

内容处理:附件;文件名= “配置工具”

缓存控制:私人

内容类型:应用/ vnd.openxmlformats-officedocument.spreadsheetml.sheet

的Content-Length:491470

连接:关闭

+0

您是否检查过Fiddler显示的内容类型? – merekel 2013-02-18 17:13:53

回答

1

经过一番混乱后,我终于找到了这是什么。尽管有内容类型,但IE仍希望扩展名为文件名。所以,

return File(file.FileBinary, "application/pdf", "test"); 

将无法​​正常工作,但

return File(file.FileBinary, "application/pdf", "test.pdf"); 

一样。

+0

+1你的回答救了我! – 2013-12-09 13:08:42