在通過(guò)IE直接下載文件的時(shí)候,我們可能會(huì)遇到一個(gè)比較常見(jiàn)的問(wèn)題,那就是:我們下載的文件的文件名如果過(guò)長(zhǎng)的話,就會(huì)出現(xiàn),彈出的提示框的文件標(biāo)題名變成亂碼,即“%f%e%1”這樣的亂碼,而且點(diǎn)擊保存到本地,文件的名稱同樣是亂碼,一般我們使用的代碼如下:
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(strAccFileName, Encoding.UTF8) + "");
Response.CacheControl = "Private";
Response.BinaryWrite(objFileBuf);
Response.Flush();
經(jīng)過(guò)我們測(cè)試,strAccFileName支持的字符長(zhǎng)度在32個(gè)以下,如果超過(guò)該長(zhǎng)度,即會(huì)出現(xiàn)我們開(kāi)始描述的亂碼問(wèn)題,所以,我們對(duì)超過(guò)32個(gè)字符以外的字符進(jìn)行了認(rèn)為截取,并使用“……”作為省略的象征,這樣能夠稍微緩解一下問(wèn)題,畢竟不會(huì)出現(xiàn)客戶認(rèn)為的異常的亂碼了,但是如果客戶堅(jiān)持要保證完整用戶名下載,并且其用戶名實(shí)在是非常的長(zhǎng)的情況的話,那我們暫時(shí)只能考慮使用其他的下載方式,或者自己重新設(shè)計(jì)編寫(xiě)一個(gè)下載界面,是可以解決問(wèn)題的。
最后說(shuō)一點(diǎn),我使用的瀏覽器是IE8版,但啟用的是IE7的應(yīng)用,出現(xiàn)的情況卻是名稱的前面字符出現(xiàn)了亂碼,但是,有一部分內(nèi)容是正常的,但是,在IE6中,卻是全部都是亂碼,不知道是否做了優(yōu)化?但我們最終還是選擇了多截取一部分內(nèi)容,以保證出現(xiàn)亂碼的問(wèn)題。