文件仅在FireFox中下载问题

时间:2012-04-05 07:07:11

标签: c# cross-browser http-headers

我制作了一个消息系统,用户可以在其中发送消息,他们也可以在消息中将文件作为附件发送(就像简单的电子邮件系统一样)。 我在firefox中遇到问题,如果文件名包含空格(例如,ticket.doc的602_Sign文件) 在firefox中它会保存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;

        }

3 个答案:

答案 0 :(得分: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

原因的详细信息

答案 1 :(得分:3)

文件名应该用双引号

包围
Content-Disposition: attachment; filename="602_Sign File for ticket.doc" 

答案 2 :(得分:0)

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

这是正确的解决方案