0

我已经制作了一个消息系统,用户可以在其中相互发送消息,他们也可以将文件作为消息中的附件发送(它就像简单的电子邮件系统)。我在 Firefox 中遇到问题,如果文件名在 Firefox 中包含空格(例如,ticket.doc 的 602_Sign 文件),它将与 602_Sign.doc 一起保存,但它应该显示完整的名称,问题在 IE 和 chrome 上运行良好,下面是我的下载文件代码

public ActionResult Download(string attFileName)
        {
            string FileName = Path.Combine(Server.MapPath("~/MessageAttachmentFiles"), attFileName);
            System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
            response.ClearContent();
            response.Clear();
            Response.AddHeader("Content-Disposition", string.Format("attachment; filename = {0}", System.IO.Path.GetFileName(FileName)));
            response.TransmitFile(FileName);
            response.Flush();
            response.End();
            return null;

        }
4

3 回答 3

8

下面应该工作

response.AddHeader("Content-Disposition", 
                    string.Format("attachment; filename = \"{0}\"",
                    System.IO.Path.GetFileName(FileName)));

关于为什么http://kb.mozillazine.org/Filenames_with_spaces_are_truncated_upon_download的更多详细信息

于 2012-04-05T07:14:13.180 回答
3

文件名应该用双引号引起来

Content-Disposition: attachment; filename="602_Sign File for ticket.doc" 
于 2012-04-05T07:14:40.250 回答
0
response.AddHeader("Content-Disposition", 
                    string.Format("attachment; filename = \"{0}\"",
                    System.IO.Path.GetFileName(FileName)));

这是正确的解决方案

于 2015-03-20T18:14:36.430 回答