文章出處
文章列表
這個標題有點長,簡單來說就是,對于一個文件下載來說,是否可以提示用戶,讓它去保存,而不是將它在瀏覽器中打開,在瀏覽器中打開有個致命問題,那就是,如果你的頁面編碼和文件的編碼不一致時,打開的就是亂碼,本文事實上主要解決的就是這個問題。
上面的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, "下載文件"); } }
下載是視頻截圖:
文章列表
全站熱搜