我遇到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,附加(它附加“,附加”到扩展名)
有没有人遇到过这种问题?
由于
答案 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;
为我解决了这个问题