public void outPut(HttpServletRequest request, HttpServletResponse response, Integer type) { ClassPathResource classPathResource = new ClassPathResource("pdf/通知.pdf"); String filename = "通知.pdf"; BufferedInputStream bufferedInputStream = null; BufferedOutputStream bufferedOutputStream = null; try { String userAgent = request.getHeader("User-Agent"); response.setCharacterEncoding("utf-8"); byte[] bytes = userAgent.contains("MSIE") ? filename.getBytes() : filename.getBytes("UTF-8"); response.setContentType("application/pdf"); response.addHeader("Content-Disposition", "attachment;filename=" + new String(bytes, "iso8859-1")); bufferedInputStream = new BufferedInputStream(classPathResource.getInputStream()); //bufferedOutputStream = new BufferedOutputStream(response.getOutputStream()); byte[] bytes2 = new byte[1024]; int i = 0; while ((i = bufferedInputStream.read(bytes2)) != -1){ response.getOutputStream().write(bytes2, 0, i); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { try { response.getOutputStream().flush(); response.getOutputStream().close(); //bufferedOutputStream.close(); bufferedInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } }
上面的被注销掉的两行代码,在没有注销之前,下载的pdf老是打不开。再去掉包装之后,文件可以正常打开。