spring中实现下载文件

xiaoxiao2021-02-28  119

 下载文件①

 

下载文件需要将byte数组还原成文件。

         首先使用mybatis将数据库中的byte数组查出来,指定文件名(包括格式)。然后使用OutputStream将文件输入

 

@RequestMapping(value = "downPhotoById")   public void downPhotoByStudentId(String id, final HttpServletResponse response){       PhotoEntity entity = this.photoMapper.getPhotoEntityByPhotoId(id);       byte[] data = entity.getPhotoData();       String fileName = entity.getFileName()== null ? "照片.png" : entity.getFileName();       fileName = URLEncoder.encode(fileName, "UTF-8");       response.reset();       response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");       response.addHeader("Content-Length", "" + data.length);       response.setContentType("application/octet-stream;charset=UTF-8");       OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());       outputStream.write(data);       outputStream.flush();       outputStream.close();   }  

 

<a href="<%=request.getContextPath() %>/downPhotoById.do?id=8000001">下载照片</a>  

 

 下载文件②

public ResponseEntity<byte[]> download(String fileName, File file) throws IOException {

      String dfileName = new String(fileName.getBytes("gb2312"), "iso8859-1");

      HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);       headers.setContentDispositionFormData("attachment", dfileName);

return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED); 

}

 下载文件③

//文件下载 主要方法 public static void download(HttpServletRequest request, HttpServletResponse response, String storeName, String contentType ) throws Exception { request.setCharacterEncoding("UTF-8"); BufferedInputStream bis = null; BufferedOutputStream bos = null; //获取项目根目录 String ctxPath = request.getSession().getServletContext() .getRealPath(""); //获取下载文件露肩 String downLoadPath = ctxPath+"/uploadFile/"+ storeName; //获取文件的长度 long fileLength = new File(downLoadPath).length(); //设置文件输出类型 response.setContentType("application/octet-stream"); response.setHeader("Content-disposition", "attachment; filename=" + new String(storeName.getBytes("utf-8"), "ISO8859-1")); //设置输出长度 response.setHeader("Content-Length", String.valueOf(fileLength)); //获取输入流 bis = new BufferedInputStream(new FileInputStream(downLoadPath)); //输出流 bos = new BufferedOutputStream(response.getOutputStream()); byte[] buff = new byte[2048]; int bytesRead; while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } //关闭流 bis.close(); bos.close(); } }下载直接访问控制器如:http:\\localhost:8080/springmvc/download.do

 下载文件④

@RequestMapping("/export")       public ResponseEntity<byte[]> export() throws IOException {           HttpHeaders headers = new HttpHeaders();             headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);             headers.setContentDispositionFormData("attachment", "dict.txt");             return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(new File("C:/Users/Administrator/Desktop/a.txt")),                                                   headers, HttpStatus.CREATED);         }  
转载请注明原文地址: https://www.6miu.com/read-65939.html

最新回复(0)