Spring MVC实现文件下载

 下载文件①

 

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

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

 

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

 

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

 

 下载文件②

 

/** * @Description 下载文件

* @author jxldjsn

* @date 2015年12月11日 下午6:11:33

* @param fileName

* @param file

* @return

* @throws IOException

*/

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


 下载文件④

  1. @RequestMapping("/export")  
  2.     public ResponseEntity<byte[]> export() throws IOException {  
  3.         HttpHeaders headers = new HttpHeaders();    
  4.         headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
  5.         headers.setContentDispositionFormData("attachment", "dict.txt");    
  6.         return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(new File("C:/Users/Administrator/Desktop/a.txt")),    
  7.                                               headers, HttpStatus.CREATED);    
  8.     }  
 
 


 

 

 

转载于:https://www.cnblogs.com/jxldjsn/p/5671578.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值