国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java實(shí)現(xiàn)瀏覽器下載文件,并解決兼容各瀏覽器的文件下載中文亂碼

tunny / 888人閱讀

摘要:瀏覽器下載代碼如下通過循環(huán)將讀入的文件的內(nèi)容輸出到瀏覽器中如果文件名為中文,上面的代碼下載的文件名會(huì)亂碼。解決中文亂碼方法拿到瀏覽器請(qǐng)求的判斷是否包含,是則直接講文件名轉(zhuǎn)換為,否則使用轉(zhuǎn)換。

場(chǎng)景描述:
由于項(xiàng)目需求,需要支持瀏覽器下載文件,比如招聘網(wǎng)站的在線簡歷下載。

瀏覽器下載代碼如下:
    public static void downloadFile(File file, HttpServletResponse response) {
        InputStream fin = null;
        ServletOutputStream out = null;
        try {
              fin = new FileInputStream(file);
              out = response.getOutputStream;
              response.setCharacterEncoding("utf-8");
              response.setContentType("application/x-download");
              response.addHeader("Content-Disposition", "attachment;filename=resume.doc");
     
              byte[] buffer = new byte[1024];
              int bytesToRead = -1;
              // 通過循環(huán)將讀入的Word文件的內(nèi)容輸出到瀏覽器中
              while((bytesToRead = fin.read(buffer)) != -1) {
                   out.write(buffer, 0, bytesToRead);
               }
           } catch (Exception e) {
              e.printStackTrace();
           } finally {
              if(fin != null) fin.close();
              if(out != null) out.close();
             
        }
    }

如果文件名為中文,上面的代碼下載的文件名會(huì)亂碼。

解決中文亂碼方法:
拿到瀏覽器請(qǐng)求的usreAgent,判斷是否包含MSIE,是則直接講文件名轉(zhuǎn)換為bytes,否則使用UTF-8轉(zhuǎn)換。
然后將bytes使用ISO-8859-1編碼轉(zhuǎn)換為字符串,返回到瀏覽器。

代碼如下:
public class DownloadServlet extends HttpServlet {  
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
        // codes..  
        String name = "中文名 帶空格 的測(cè)試文件.txt";  
        String userAgent = request.getHeader("User-Agent"); 
        // name.getBytes("UTF-8")處理safari的亂碼問題 
        byte[] bytes = userAgent.contains("MSIE") ? name.getBytes() : name.getBytes("UTF-8");                     
        // 各瀏覽器基本都支持ISO編碼
        name = new String(bytes, "ISO-8859-1");  
        // 文件名外的雙引號(hào)處理firefox的空格截?cái)鄦栴} 
        response.setHeader("Content-disposition", String.format("attachment; filename="%s"", name));   
        // codes..  
    }  
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/70140.html

相關(guān)文章

  • Servlet第三篇【request和response簡介、response常見應(yīng)用】

    摘要:什么是對(duì)象響應(yīng)由狀態(tài)行實(shí)體內(nèi)容消息頭一個(gè)空行組成。為什么使用方法能夠正常向?yàn)g覽器輸出中文呢你好呀我是中國這句代碼在轉(zhuǎn)成數(shù)組的時(shí)候默認(rèn)查的是編碼,而你好呀我是中國支持編碼,所以可以正常顯示出來。 response、request對(duì)象 Tomcat收到客戶端的http請(qǐng)求,會(huì)針對(duì)每一次請(qǐng)求,分別創(chuàng)建一個(gè)代表請(qǐng)求的request對(duì)象、和代表響應(yīng)的response對(duì)象 既然request對(duì)象...

    Youngs 評(píng)論0 收藏0
  • 覽器下載文件名不亂碼解決辦法

    摘要:在項(xiàng)目中發(fā)現(xiàn),使用下載中文名文件的時(shí)候,下載的文件名是亂碼的問題。但是這個(gè)問題在,,中是沒有的。原先以為是的,但是細(xì)細(xì)研究之下你會(huì)發(fā)現(xiàn)這個(gè)簡單的文件下載問題在協(xié)議里經(jīng)歷了多少波折。 在項(xiàng)目中發(fā)現(xiàn),使用Safari下載中文名文件的時(shí)候,下載的文件名是亂碼的問題。但是這個(gè)問題在IE,F(xiàn)irefox,Chrome中是沒有的。原先以為是Safari的bug,但是細(xì)細(xì)研究之下你會(huì)發(fā)現(xiàn)這個(gè)簡單的文...

    VishKozus 評(píng)論0 收藏0
  • Java文件上傳細(xì)講

    摘要:代碼量也的確減少很多也能夠獲取普通字段的參數(shù)上傳文件名的中文亂碼和上傳數(shù)據(jù)的中文亂碼我把文件名改成中文,就亂碼了表單提交過來的中文數(shù)據(jù)也亂碼了。 什么是文件上傳? 文件上傳就是把用戶的信息保存起來。 為什么需要文件上傳? 在用戶注冊(cè)的時(shí)候,可能需要用戶提交照片。那么這張照片就應(yīng)該要進(jìn)行保存。 上傳組件(工具) 為什么我們要使用上傳工具? 為啥我們需要上傳組件呢?當(dāng)我們要獲取客戶端的數(shù)據(jù)...

    soasme 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<