Java 下載 Excel模板時,報修正 Excel在“xxx.xlsx”中發現不可讀取的內容。是否恢復此工作薄的內容?如果信任此工作簿的來源,請點選"是"
阿新 • • 發佈:2018-12-14
程式碼如下:
/** * 下載匯入應用模板 * * @return */ @ResponseBody @RequestMapping(method = RequestMethod.GET) public Response getApplicationTemplate(HttpServletRequest req, HttpServletResponse res) { try { //獲取要下載的模板名稱 String fileName = "ApplicationImportTemplate.xlsx"; //設定要下載的檔案的名稱 res.setHeader("Content-disposition", "attachment;fileName=" + fileName); //通知客服檔案的MIME型別 res.setContentType("application/vnd.ms-excel;charset=UTF-8"); //獲取檔案的路徑 String filePath = getClass().getResource("/template/" + fileName).getPath(); FileInputStream input = new FileInputStream(filePath); OutputStream out = res.getOutputStream(); byte[] b = new byte[2048]; int len; while ((len = input.read(b)) != -1) { out.write(b, 0, len); } //修正 Excel在“xxx.xlsx”中發現不可讀取的內容。是否恢復此工作薄的內容?如果信任此工作簿的來源,請點選"是" res.setHeader("Content-Length", String.valueOf(input.getChannel().size())); input.close(); return Response.ok("應用匯入模板下載完成"); } catch (Exception ex) { log.error("getApplicationTemplate :", ex); return Response.ok("應用匯入模板下載失敗!"); } }
需要下載檔案位置:
如果在HttpServletResponse Header中不指定Content-Length,那麼在下載完成開啟後,會有如下提示:
轉載於:https://blog.csdn.net/jiankunking/article/details/75213798