Java Web實現使用瀏覽器從服務器下載文件(后台)


Java Web實現 使用瀏覽器從服務器下載文件。
下面實現兩種情況的下載,需求如下:

需求(一):
1、用戶在頁面填寫表單。
2、填寫完成后,選擇下載,將表單內容發往后台。
3、后台根據內容生產一個文件,發送給前端。
4、前端成功下載文件到本地。
此需求簡單來說就是,用戶在頁面上填寫內容,然后將內容轉變成文件的形式。

后台設計思路:
1、首先拿到前端發送過來的內容。
2、將內容解析,存放至緩沖區。
3、設置響應頭。
4、將緩沖區里的內容,以流的方式寫出。

代碼實現:

public void download(HttpServletResponse response){
        JSONObject json = new JSONObject();
        /* 假設這是前端使用JSON放過來的數據 */
        json.put("A","1");
        json.put("B","2");
        json.put("C","3");
        /* 遍歷JSON,將JSON的值放至緩沖區 */
        StringBuilder sb = new StringBuilder();
        Iterator it = json.keys();
        while(it.hasNext()){
            String key =  (String)it.next();
            String value = (String)json.get(key);
            sb.append(key).append("=").append(value).append("\n");
        }
        /*  設置文件ContentType類型,這樣設置,會自動判斷下載文件類型   */
        response.setContentType("application/multipart/form-data");
        /* 設置文件頭:最后一個參數是設置下載文件名(假如我們叫a.ini)   */
        response.setHeader("Content-Disposition", "attachment;filename=a.ini");
        try{
            /* 用流將數據寫給前端 */
            OutputStream os = response.getOutputStream();
            os.write(sb.toString().getBytes());
            os.flush();
            os.close();
        }catch (IOException ioe){
            ioe.printStackTrace();
        }
    }

 




需求(二):
1、用戶指定下載什么文件。
2、成功下載文件到本地。

后台設計思路:
1、首先獲取前端需要下載什么文件。
2、找到文件在服務器上面的路徑。
3、將文件讀進內存
4、將文件以流的方式寫出。

代碼實現:

 public void download() throws  IOException{
        //獲取服務器文件
        File file = new File("/home/a.txt");

        InputStream ins = new FileInputStream(file);
        /* 設置文件ContentType類型,這樣設置,會自動判斷下載文件類型 */
        response.setContentType("multipart/form-data");
        /* 設置文件頭:最后一個參數是設置下載文件名 */
        response.setHeader("Content-Disposition", "attachment;filename="+file.getName());
        try{
            OutputStream os = response.getOutputStream();
            byte[] b = new byte[1024];
            int len;
            while((len = ins.read(b)) > 0){
                os.write(b,0,len);
            }
            os.flush();
            os.close();
            ins.close();
        }catch (IOException ioe){
           ioe.printStackTrace();
        }
    }

 

鏈接:https://blog.csdn.net/qq_28082757/article/details/72771166


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM