Spring MVC实现文件下载
2016-07-14 20:03
615 查看
[b] 下载文件①[/b]
下载文件需要将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>
[b] 下载文件②[/b]
[b]/** * @Description 下载文件 [/b]
[b]* @author jxldjsn[/b]
[b]* @date 2015年12月11日 下午6:11:33 [/b]
[b]* @param fileName [/b]
[b]* @param file [/b]
[b]* @return [/b]
[b]* @throws IOException [/b]
[b]*/ [/b]
[b]public ResponseEntity<byte[]> download(String fileName, File file) throws IOException {[/b]
[b] String dfileName = new String(fileName.getBytes("gb2312"), "iso8859-1");[/b]
[b] HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData("attachment", dfileName); [/b]
[b]return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED); }
[/b]
[b][b] 下载文件③[/b][/b]
[b] 下载文件④[/b]
@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);
}
下载文件需要将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>
[b] 下载文件②[/b]
[b]/** * @Description 下载文件 [/b]
[b]* @author jxldjsn[/b]
[b]* @date 2015年12月11日 下午6:11:33 [/b]
[b]* @param fileName [/b]
[b]* @param file [/b]
[b]* @return [/b]
[b]* @throws IOException [/b]
[b]*/ [/b]
[b]public ResponseEntity<byte[]> download(String fileName, File file) throws IOException {[/b]
[b] String dfileName = new String(fileName.getBytes("gb2312"), "iso8859-1");[/b]
[b] HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData("attachment", dfileName); [/b]
[b]return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED); }
[/b]
[b][b] 下载文件③[/b][/b]
//文件下载 主要方法 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
[b] 下载文件④[/b]
@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);
}
相关文章推荐
- java实现选择排序
- 如何去掉MyEclipse中的MyEclipse Derby
- Maven学习笔记(三)——使用Maven构件web项目
- JAVA 利用Throwable和Thread分析堆栈跟踪元素
- Java 数据保存与读取,保存数据信息并加密
- 第2章 Java内存区域与内存溢出异常
- JAVA集合框架之List HashSet去重及TreeSet排序详解
- SpringMVC实现上传和下载
- Java 7之基础 - 强引用、弱引用、软引用、虚引用
- java由出生日期算出年龄
- java常用设计模式趣解
- Java基础_内部类、静态内部类、成员内部类、局部内部类、匿名内部类 (转)
- Java异常处理:错误信息trace方式显示
- 第三章:Java基础程序设计(上)
- struts action使用ajax验证用户名是否有被注册
- 多线程设计模式——Pipeline(流水线)模式
- Java this关键字的详解
- java连接impala数据库
- Java中模拟POST上传文件
- Java字符串中文检测转换