/** * 支持在线打开和下载 * * @param filePath * @param response * @param isOnLine * @param fname * @throws IOException */ public void download(String filePath, HttpServletResponse response, boolean isOnLine, String fname) throws IOException { System.out.println("filePath:" + filePath); File f = new File(filePath); if (!f.exists()) { response.sendError(404, "File not found!"); return; } BufferedInputStream br = new BufferedInputStream(new FileInputStream(f)); byte[] bs = new byte[1024]; int len = 0; response.reset(); // 非常重要 if (isOnLine) { // 在线打开方式 URL u = new URL("https://cdn047.yun-img.com/static/upload/bigam/download/20210324153848_66420.pdf" + filePath); String contentType = u.openConnection().getContentType(); response.setContentType(contentType); response.setHeader("Content-Disposition", "inline;filename=" + fname); // 文件名应该编码成utf-8,注意:使用时,我们可忽略这句 } else { // 纯下载方式 response.setContentType("application/x-msdownload"); response.setHeader("Content-Disposition", "attachment;filename=" + fname); } OutputStream out = response.getOutputStream(); while ((len = br.read(bs)) > 0) { out.write(bs, 0, len); } out.flush(); out.close(); br.close();