Java從后端下載文件到瀏覽器


// 注:

// 獲取項目下文件或者文件流

 
         

// File file = new File(this.getClass().getResource("/xls/adminImportUserTemplate.xls").toURI());

 
         

// in = new BufferedInputStream(this.getClass().getResourceAsStream("/xls/adminImportUserTemplate.xls"));



/**
* 下載文件到瀏覽器 * @param request * @param response * @param filename 要下載的文件名 * @param file 需要下載的文件對象 * @throws IOException */ public static void downFile(HttpServletRequest request, HttpServletResponse response, String filename, File file) throws IOException { // 文件存在才下載 if (file.exists()) { OutputStream out = null; FileInputStream in = null; try { // 1.讀取要下載的內容 in = new FileInputStream(file); // 2. 告訴瀏覽器下載的方式以及一些設置 // 解決文件名亂碼問題,獲取瀏覽器類型,轉換對應文件名編碼格式,IE要求文件名必須是utf-8, firefo要求是iso-8859-1編碼 String agent = request.getHeader("user-agent"); if (agent.contains("FireFox")) { filename = new String(filename.getBytes("UTF-8"), "iso-8859-1"); } else { filename = URLEncoder.encode(filename, "UTF-8"); } // 設置下載文件的mineType,告訴瀏覽器下載文件類型 String mineType = request.getServletContext().getMimeType(filename); response.setContentType(mineType); // 設置一個響應頭,無論是否被瀏覽器解析,都下載 response.setHeader("Content-disposition", "attachment; filename=" + filename); // 將要下載的文件內容通過輸出流寫到瀏覽器 out = response.getOutputStream(); int len = 0; byte[] buffer = new byte[1024]; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { out.close(); } if (in != null) { in.close(); } } } }

 


免責聲明!

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



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