1

我在控制器上有一个返回文件的方法

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

文件对象正确返回值,但 IE9 没有选择内容类型。我拥有的当前文件类型列表是:

'应用程序/pdf'

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

'应用程序/vnd.ms-excel'

所有其他浏览器似乎工作正常,但 IE 似乎只是忽略了扩展。我遇到的问题是,由于该文件是在没有扩展名的情况下下载的,因此会提示用户选择使用哪个应用程序打开文件,但他们不知道。

我在 firefox、chrome、safari 和 opera 中尝试过,一切都很好

这是调试器的视图,显示了返回的值

调试

这是 fiddler 显示内容类型的输出:

HTTP/1.1 200 正常

服务器:ASP.NET 开发服务器/10.0.0.0

日期:格林威治标准时间 2013 年 2 月 19 日星期二 10:16:41

X-AspNet-版本:4.0.30319

X-AspNetMvc-版本:3.0

内容处置:附件;filename="配置工具"

缓存控制:私有

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

内容长度:491470

连接:关闭

4

1 回答 1

1

经过一番折腾,我终于找到了这是什么。尽管具有内容类型,IE 仍需要文件名的扩展名。所以,

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

不会工作,但是

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

做。

于 2013-02-19T15:49:23.397 回答