Java實現檔案下載功能

花生殼兒發表於2020-12-31

 前端代HTML程式碼:

<a href="requestUrl"><span id="downloadDocumentText">點選觸發</span></a>

 前端代JQuery程式碼:

<script type="application/javascript">
    $('#downloadDocumentText').click();
</script>

 

後臺程式碼:

public void downloadDocument (HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 下載本地檔案
        // 設定檔名fileName 這裡做了特殊處理(防止中文名稱輸出到前端之後變成下劃線
        // 如果不需要進行處理可以使用String fileName = "批量布控.xlsx";
        // String fileName = new String (request.getParameter("filename").getBytes("UTF-8"),"ISO_8859_1");
        String fileName =new String ("批量布控.xlsx".getBytes("UTF-8"),"ISO_8859_1");

        // 讀到流中
        response.setContentType("text/html;charset=utf-8");
        //通知瀏覽器以下載的方式開啟
        response.addHeader("Content-Type","application/octet-stream");
        response.addHeader("Content-Disposition","attachment;filename="+fileName);
        //通過檔案輸入流讀取檔案
        InputStream in=new FileInputStream("sinosoft-yjs-webs\\sinosoft-yjs-web-zdgzry\\src\\main\\resources\\templates\\document\\批量布控.xlsx");
        //通過檔案輸出流寫入檔案
        OutputStream out=response.getOutputStream();
        byte[] bytes=new byte[1024];
        int len=0;
        //迴圈將寫入流
        while ((len=in.read(bytes))!=-1){
            out.write(bytes,0,len);
        }
        // 關閉資源
        out.flush();
        out.close();
    }

 

相關文章