1. 程式人生 > 實用技巧 >讀書報告2

讀書報告2

    @RequestMapping("/downFile")
    public void downFile(HttpServletRequest request, HttpServletResponse response) throws MalformedURLException {
        String s = "http://www.gov.cn/premier/2020-12/14/5569425/images/461c0ea163c94683ac0b0cb7bf4eaf39.jpg";
        URL url = new URL(s);
        File file = new File(s);
        String fileName 
= file.getName(); String ext = fileName.substring(fileName.lastIndexOf(".") + 1); String agent = (String) request.getHeader("USER-AGENT"); // 判斷瀏覽器型別 try { if (agent != null && agent.indexOf("Fireforx") != -1) { fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1"); //
UTF-8編碼,防止輸出檔名亂碼 } else { fileName = URLEncoder.encode(fileName, "UTF-8"); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } BufferedInputStream bis = null; OutputStream os = null; response.reset(); response.setCharacterEncoding(
"utf-8"); if (ext == "docx") { response.setContentType("application/msword"); // word格式 } else if (ext == "pdf") { response.setContentType("application/pdf"); // word格式 } response.setHeader("Content-Disposition", "attachment; filename=" + fileName); try { bis = new BufferedInputStream(url.openStream()); byte[] b = new byte[bis.available() + 1000]; int i = 0; os = response.getOutputStream(); // 直接下載匯出 while ((i = bis.read(b)) != -1) { os.write(b, 0, i); } os.flush(); os.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (os != null) { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } } }