91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

文件下載

發布時間:2020-07-04 16:34:36 來源:網絡 閱讀:494 作者:奔跑吧爽爽 欄目:開發技術

在創建一個文件夾,名稱download,先拷入要下載的一些文件
編寫下載的頁面,提供一些下載的超鏈接,點擊超鏈接,彈出下載的窗口
編寫下載的Servlet類,完成下載

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 先獲取到文件的名稱
    String filename = request.getParameter("filename");
    // 解決中文亂碼
    filename = new String(filename.getBytes("ISO-8859-1"),"UTF-8");
    // System.out.println("要下載的文件名稱:"+filename);

            //設置兩個頭一個流
    // 設置第一個頭,值可以是MIME類型,可以獲取該文件的MIME類型
    String type = this.getServletContext().getMimeType(filename);
    response.setHeader("content-type",type);

    // 先獲取到用戶使用的瀏覽器的信息,根據瀏覽器的信息采用不同的編碼,例如火狐,采用Base64編碼,使用IE采用的URL編碼
    // 先判斷瀏覽器的信息
    String agent = request.getHeader("user-agent");
    // Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
    // System.out.println(agent);

    String name = null;
    if(agent.contains("Firefox")){
        // 使用是火狐,采用Base64編碼
        name = base64EncodeFileName(filename);
    }else{
        // 使用的是IE或者谷歌,使用URL編碼
        name = URLEncoder.encode(filename, "UTF-8");
    }
    System.out.println("編碼后的內容:"+name);
    // 設置第二個頭
    response.setHeader("content-disposition", "attachment;filename="+name);

    // 一個流,先獲取到要下載的文件的輸入流,使用response對象的輸出流輸出到客戶端上,完成文件下載了
    // 先獲取到要下載的文件的輸入流,先獲取到download文件夾 + filename 文件,獲取文件的輸入流了
    String path = this.getServletContext().getRealPath("/download");
    // System.out.println(path);
    // 獲取文件的輸入流
    InputStream in = new FileInputStream(path+"/"+filename);
    // 獲取輸出流,不能new,使用response對象
    OutputStream os = response.getOutputStream();
    byte [] b = new byte[1024];
    int len = 0;
    while((len = in.read(b)) != -1){
        os.write(b, 0, len);
    }
    in.close();
    os.close();
}

/**
 * 傳入文件的名稱,進行Base64編碼
 * @param fileName
 * @return
 */
public String base64EncodeFileName(String fileName) {
    BASE64Encoder base64Encoder = new BASE64Encoder();
    try {
        return "=?UTF-8?B?"
                + new String(base64Encoder.encode(fileName
                        .getBytes("UTF-8"))) + "?=";
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
        throw new RuntimeException(e);
    }
}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

茌平县| 正安县| 河北区| 广西| 株洲市| 阿瓦提县| 怀安县| 岐山县| 福贡县| 禹州市| 承德县| 张掖市| 洛川县| 新建县| 东平县| 邯郸县| 英德市| 灌云县| 天全县| 龙岩市| 宣威市| 天台县| 改则县| 黄龙县| 读书| 宁远县| 哈巴河县| 固镇县| 鄱阳县| 丰顺县| 雅江县| 荥阳市| 汉寿县| 城口县| 钟山县| 大邑县| 泗水县| 邹平县| 军事| 罗平县| 衡阳县|