具有特定文件名和Safari或Chrome的ASP.NET MVC FileResult

时间:2010-11-11 02:32:43

标签: asp.net-mvc google-chrome safari fileresult

我遇到FileResult返回具有特定文件名的文件的问题。在数据库中,文件名只是ID +扩展名(例如:456789.mp3)

这段代码

FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
return File(fs, "application/octet-stream", "myfile.mp3");

除了Webkit浏览器(Chrome,Safari)之外,每个浏览器都能正常运行。 Chrome和Safari会将文件作为原始文件名(456789.mp3)接收。当我用

添加标题时
Response.AppendHeader("Content-Disposition", "attachment;filename=myfile.mp3");

Safari接收文件为myfile.mp3attach(注意“附加”附加到扩展名?),但Chrome收到此文件为myfile.mp3,附加(它附加“,附加”到扩展名)

有没有人遇到过这种问题?

由于

2 个答案:

答案 0 :(得分:7)

它帮助了我:

        var encoding = System.Text.Encoding.UTF8;
        Response.Charset = encoding.WebName;
        Response.HeaderEncoding = encoding;

            Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", (Request.Browser.Browser == "IE") ? HttpUtility.UrlEncode(fileName, encoding) : fileName));

        return File(fs, contentType, fileName);

答案 1 :(得分:0)

         Response.Clear();
         Response.ClearHeaders();

之前

         Response.Charset = encoding.WebName; 

为我解决了这个问题