一个关于下载文件的代码,保证不出现中文乱码!

来源:互联网 发布:java项目开发实录视频 编辑:程序博客网 时间:2024/04/30 04:12
 代码如下:
/// <summary> 
    ///文件下载类.
    ///短小精悍的,绝对好用,支持中文不乱码
    /// </summary> 
    /// <param  name="FileName">客户端保存的文件名 </param> 
    private void FileDownload(string FileName)
    {
        try
        {
            string filePath = Server.MapPath("DownLoad/" + FileName + "");//下载完整路径
            FileInfo fileInfo = new FileInfo(filePath);
            if (!fileInfo.Exists)
            {
                Response.Write(" <script>alert('文件不存在'); </script>");
                return;
            }
            Response.Clear();
            Response.ClearHeaders();
            Response.Buffer = false;
            //设置输出流的 HTTP MIME 类型
            Response.ContentType = "application/octet-stream";
            //通知浏览器下载文件而不是打开。下载时,显示文件名
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8));
            //下载时,显示文件大小
            Response.AppendHeader("Content-Length", fileInfo.Length.ToString());
            Response.WriteFile(filePath);
            Response.Flush();
            Response.End();
        }
        catch (Exception ee)
        {
            if (Trace.IsEnabled)
            { Trace.Warn(ee.Message); }
            Response.Write(" <script>alert('下载失败'); </script>");
        }
    }

如果此时运行此代码,能成功下载,但如果要单步执行,则会出现异常。解决办法:去掉Response.End();
即可。
注,路径,要写对。


其实,在网页的HTML代码中,也可以用 <a href="文件路径">文件名 </a>来实现,这个最简单。
原创粉丝点击