一:以网络的方式下载文件public HttpServletResponse fileDownload(@ApiParam(value = "文件ID",required=true) @RequestParam(required = true)String fileID, @ApiParam(value = "文件名",required=true) @RequestParam(required = true) String fileName,
HttpServletResponse response) throws IOException{ try { String path = fileDir+uploadedPath+File.separator+fileID; // path是指欲下载的文件的路径。 File file = new File(path); // 以流的形式下载文件。 InputStream fis = new BufferedInputStream(new FileInputStream(path)); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 清空response response.reset(); // 设置response的Header response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes())); response.addHeader("Content-Length", "" + file.length()); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); toClient.write(buffer); toClient.flush(); toClient.close(); } catch (IOException ex) { ex.printStackTrace(); } return response; }
二:下载本地文件
public ReturnResponse<String> fileDownload(@ApiParam(value = "文件ID",required=true) @RequestParam(required = true)String fileID, @ApiParam(value = "文件名",required=true) @RequestParam(required = true) String fileName, HttpServletResponse response) throws IOException{ File outFile = new File(fileDir+uploadedPath+ File.separator+fileID); if(!outFile.exists()){ return new ReturnResponse<String>(0, "FAILURE","文件不存在"); } OutputStream outputStream = null; try { response.setContentType("application/x-download"); response.addHeader("Content-Disposition", "attachment;filename="+fileName); outputStream = response.getOutputStream(); byte[] filebytes = org.apache.commons.io.FileUtils.readFileToByteArray(outFile); outputStream.write(filebytes); outputStream.flush(); return new ReturnResponse<String>(0, "SUCCESS",""); } catch (IOException e) { e.printStackTrace(); return new ReturnResponse<String>(0, "FAILURE","读取文件失败"); }finally{ if(outputStream!=null){ outputStream.close(); } } }