二.文件下载
我们通过controller层调用请求方法,获取到服务器本地请求地址,并将网络请求地址替换成本地,截取当前名称进行+1作为下载名称,再获取请求头信息,以二进制流的形式进行转换,并通过ResponseEntity将文件内容以字节数组的形式作为响应主体返回给客户端
1.在controller层加入以下代码
@RequestMapping(value="/download") public ResponseEntity<byte[]> download(HBook hBook, HttpServletRequest req){ try { //先根据文件id查询对应图片信息 HBook clz = this.hBookbiz.selectByPrimaryKey(hBook.getBid()); String diskPath = PropertiesUtil.getValue("dir"); String reqPath = PropertiesUtil.getValue("server"); String realPath = clz.getImg().replace(reqPath,diskPath); String fileName = realPath.substring(realPath.lastIndexOf("/")+1); //下载关键代码 File file=new File(realPath); HttpHeaders headers = new HttpHeaders();//http头信息 String downloadFileName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");//设置编码 headers.setContentDispositionFormData("attachment", downloadFileName); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); //MediaType:互联网媒介类型 contentType:具体请求中的媒体类型信息 return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.OK); }catch (Exception e){ e.printStackTrace(); } return null; }
2.测试结果