C# 一般處理程序下載文件

利用一般處理程序下載文件,會在很多時候用到,但是,這是一條不歸路啊,路上各種坑,不是亂碼就是下載不下來。同樣,今天我也踩上了這顆雷。還好,我是排雷兵,一樣一樣的排除

C# code

 //文件下載
        public void downloadfile(HttpContext context, string s_fileName)
        {
            string path = s_fileName;
            System.IO.FileInfo file = new System.IO.FileInfo(System.Web.HttpContext.Current.Server.MapPath(path));
            context.Response.Clear();
            context.Response.Charset = "UTF-8";
            context.Response.ContentEncoding = System.Text.Encoding.UTF8;
            context.Response.AddHeader("Content-Type", "application/octet-stream");
            // 添加頭信息,爲"文件下載/另存爲"對話框指定默認文件名,設定編碼爲UTF8,防止中文文件名出現亂碼
            context.Response.AddHeader("Content-Disposition","attachment; filename="+ System.Web.HttpUtility.UrlEncode(file.Name, System.Text.Encoding.UTF8));
            // 添加頭信息,指定文件大小,讓瀏覽器能夠顯示下載進度
            context.Response.AddHeader("Content-Length", file.Length.ToString());
            //// 指定返回的是一個不能被客戶端讀取的流,必須被下載
            context.Response.ContentType = "application/ms-excel";
            // 把文件流發送到客戶端
            context.Response.WriteFile(file.FullName);
            // 停止頁面的執行
            context.Response.End();
        }

注意:html頁面一定不能是用ajax去請求一般處理程序,否則累死也實現不了下載,他會永遠給你彈出一個框,一面一堆亂碼

一定要同<a href="....../a.ashx">下載</a>這樣的請求方式纔可以,需要傳參的話,直接在後面拼上就行

這樣,輕輕鬆鬆搞定


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章