asp.net 下载文件时文件名乱码问题解决

原代码:

        string fileName = "模板.doc";
        string filePath = Server.MapPath("~/Download/ZJXX/模板.doc");
        FileInfo fileInfo = new FileInfo(filePath);
        Response.Clear();
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
        Response.AddHeader("Content-Length", fileInfo.Length.ToString());
        Response.AddHeader("Content-Transfer-Encoding", "binary");
        Response.ContentType = "application/octet-stream";
        Response.ContentEncoding = System.Text.Encoding.UTF8;
        Response.WriteFile(fileInfo.FullName);
        Response.Flush();
        Response.End();

文件名中文,使用ut8编码 , 将header中的fileName编码、并在contentEncoding中指定字符集

修改后:

        string fileName = "模板.doc";
        string filePath = Server.MapPath("~/Download/ZJXX/模板.doc");
        FileInfo fileInfo = new FileInfo(filePath);
        Response.Clear();
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
        Response.AddHeader("Content-Length", fileInfo.Length.ToString());
        Response.AddHeader("Content-Transfer-Encoding", "binary");
        Response.ContentType = "application/octet-stream";
        Response.ContentEncoding = System.Text.Encoding.UTF8;
        Response.WriteFile(fileInfo.FullName);
        Response.Flush();
        Response.End();

 

posted @ 2019-12-17 12:00  陈鹏昱Chen  阅读(346)  评论(0)    收藏  举报