回到目錄
這個(gè)標(biāo)題有點(diǎn)長(zhǎng),簡(jiǎn)單來(lái)說(shuō)就是,對(duì)于一個(gè)文件下載來(lái)說(shuō),是否可以提示用戶,讓它去保存,而不是將它在瀏覽器中打開(kāi),在瀏覽器中打開(kāi)有個(gè)致命問(wèn)題,那就是,如果你的頁(yè)面編碼和文件的編碼不一致時(shí),打開(kāi)的就是亂碼,本文事實(shí)上主要解決的就是這個(gè)問(wèn)題。
上面的URI格式的文件直接使用瀏覽器打開(kāi),由于文件編碼是GB2312而網(wǎng)頁(yè)編碼是UTF-8,所以,頁(yè)面上的文字就變成了亂碼。
知道了產(chǎn)生問(wèn)題的根源之后,我們?cè)賮?lái)解決它,首先,我們沒(méi)法去控制URI上的文件編碼,所以,我們只能把它讀到本地(WWW服務(wù)器),然后再進(jìn)行二次組織,并返回到客戶端(自己的瀏覽器),對(duì)于URI的文件來(lái)說(shuō),我們不能直接返回,必須把它讀成流之后,再返回,其實(shí),.net為我們已經(jīng)封裝的很簡(jiǎn)便了,下面是實(shí)現(xiàn)的代碼,大家看一下:
/// <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, "下載文件"); } }下載是視頻截圖:
回到目錄
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注