以弹出文件形式提供下载时出现乱码时。

        public  void ToOpen(string serverfilpath, string filename)
        {
            FileStream fileStream = new FileStream(serverfilpath, FileMode.Open);
            long fileSize = fileStream.Length;
            HttpContext.Current.Response.ContentType = "application/octet-stream";
            ////inline --- 有IE在线打开选项 

    ////attachment --- 作为附件下载

            HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=\"" + UTF_FileName(filename) + "\";");
            HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString());
            HttpContext.Current.Response.ContentType = "application/octet-stream";
            byte[] fileBuffer = new byte[fileSize];
            fileStream.Read(fileBuffer, 0, (int)fileSize);
            HttpContext.Current.Response.BinaryWrite(fileBuffer);
            fileStream.Close();
            HttpContext.Current.Response.End();
        }

        private  string UTF_FileName(string filename)
        {

    //IE中要编码下,FF中则不用,不然出现文件名乱码
            string browser = this.Context.Request.UserAgent.ToUpper();
            if (browser.Contains("FIREFOX") == true)
            {
                return filename;
            }
            return HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);
           
        }

posted on 2010-11-17 11:54  Leafson  阅读(315)  评论(0编辑  收藏  举报

导航