文章出處

回到目錄

這個標題有點長,簡單來說就是,對于一個文件下載來說,是否可以提示用戶,讓它去保存,而不是將它在瀏覽器中打開,在瀏覽器中打開有個致命問題,那就是,如果你的頁面編碼和文件的編碼不一致時,打開的就是亂碼,本文事實上主要解決的就是這個問題。

上面的URI格式的文件直接使用瀏覽器打開,由于文件編碼是GB2312而網頁編碼是UTF-8,所以,頁面上的文字就變成了亂碼。

知道了產生問題的根源之后,我們再來解決它,首先,我們沒法去控制URI上的文件編碼,所以,我們只能把它讀到本地(WWW服務器),然后再進行二次組織,并返回到客戶端(自己的瀏覽器),對于URI的文件來說,我們不能直接返回,必須把它讀成流之后,再返回,其實,.net為我們已經封裝的很簡便了,下面是實現的代碼,大家看一下:

       /// <summary>
        /// 下載文件,同步支持本地和URI的文件
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public ActionResult DownLoad(string path)
        {
            if (path.IndexOf("http://") < 0)
            {
                string localPath = Server.MapPath("/" + path);
                string contentType = MimeMapping.GetMimeMapping(localPath);
                return File(localPath, contentType, "下載文件");
            }
            else
            {
                HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create(path);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream stream = response.GetResponseStream();
                var contentType = response.ContentType;//獲得文件的總大小
                return File(stream, contentType, "下載文件");
            }
        }

下載是視頻截圖:

回到目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()