基于spring的文件上传下载
Posted 蕾姆大人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于spring的文件上传下载相关的知识,希望对你有一定的参考价值。
package com.zsf.util; import org.apache.commons.io.FileUtils; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; public class FileLoadUtil{ /** * 图片上传 * @param request * @param file */ public static String upload(HttpServletRequest request, MultipartFile file){ //重新定义文件名防止重名被替换 String fileName = UUIDUtil.createUUID(); //获取文件上传的路径 String path = request.getServletContext().getRealPath("/images"); //如果上传目录不存在,则创建出来 File dir = new File(path); if(!dir.exists()){ dir.mkdir(); } //获取上传的文件名(也可以自定义) //String fileName = file.getOriginalFilename(); //构建一个完整文件信息(路径 + 文件名) File fileMessage = new File(dir.getAbsolutePath() + "/" + fileName); try { //执行上传,只需要调用transferTo方法即可 file.transferTo(fileMessage); //将文件名放入model中 // model.addAttribute("fileName", fileName); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("上传图片失败"); } return fileName; } /** * 图片下载 * @param fileName * @param request * @return */ public static ResponseEntity<byte[]> downLoad(String fileName,HttpServletRequest request){ //获取下载路径 String path = request.getServletContext().getRealPath("/images"); //构建下载文件 File file = new File(path + "/" + fileName); //创建HttpHeaders设置响应头信息 HttpHeaders headers = new HttpHeaders(); try { //设置在响应头中的文件名称,这里进行重新编码,防止中文乱码 String headerFileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1"); //设置内容以附件的方式下载 headers.setContentDispositionFormData("attachment", headerFileName); //设置相应类型为application/octet-stream headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); //创建ResponseEntity对象 ResponseEntity<byte[]> entity = new ResponseEntity<>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED); return entity; } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("文件下载失败"); } } }
以上是关于基于spring的文件上传下载的主要内容,如果未能解决你的问题,请参考以下文章