1

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,attach 接收(它将“,附加”附加到扩展名)

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

谢谢

4

2 回答 2

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);
于 2011-01-25T07:19:07.977 回答
0

推杆

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

         Response.Charset = encoding.WebName; 

为我解决了这个问题

于 2015-11-09T04:39:19.870 回答