一,导入pom依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
二,MultipartFile的常用方法
上传文件时
MultipartFile file;
String oldfilename =file.getOriginalFilename();//得到file的原始文件名字
String ext = "."+FilenameUtils.getExtension(file.getOriginalFilename());//得到文件的.后缀
String newfilename = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ UUID.randomUUID().toString().replace("-","")+ext;//编辑文件的新文件名称
long size = file.getSize();//得到文件的大小
String type = file.getContentType();//得到文件的类型
String url = "E:/idea_project";
String dataFormat = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
String dataDirPath = url+"/"+dataFormat;
File files = new File(dataDirPath);
if (!files.exists()) files.mkdirs();//是否存在当前路径的文件,不存在就创建
file.transferTo(new File(files,newfilename));//将文件以newfilename为名放入files文件夹下
文件下载时
//获取文件信息 实体类userfile
Files userfile = filesService.findById(id);
//根据文件信息和文件存储路径获取文件输入流
String url = userfile.getPath()+"/"+userfile.getNewfilename();
//附件形式下载
response.setHeader("Content-Disposition","attachment;fileName="+ userfile.getNewfilename());
//获取文件输入流
FileInputStream inputStream = new FileInputStream(new File(url));
//获取相应输出流
OutputStream outputStream = response.getOutputStream();
//文件拷贝
IOUtils.copy(inputStream,outputStream);
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);
三,controller类
@RestController
@RequestMapping("files")
public class filesController {
@Autowired
private FilesService filesService;
@GetMapping("download")
public void download(@Param("id") Integer id, HttpServletResponse response) throws IOException {
//获取文件信息
Files userfile = filesService.findById(id);
//根据文件信息和文件存储路径获取文件输入流
String url = userfile.getPath()+"/"+userfile.getNewfilename();
System.out.println(url);//
// String realpath = ResourceUtils.getURL(url).getPath();
// System.out.println(realpath);//
// response.setHeader("Content-Disposition","attachment;fileName="+ URLEncoder.encode(userfile.getOldfilename(), "UTF-8"));
//附件形式下载
response.setHeader("Content-Disposition","attachment;fileName="+ userfile.getNewfilename());
//获取文件输入流
FileInputStream inputStream = new FileInputStream(new File(url));
// ServletOutputStream outputStream = response.getOutputStream();
//获取相应输出流
OutputStream outputStream = response.getOutputStream();
//文件拷贝
IOUtils.copy(inputStream,outputStream);
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);
// int b;
// while((b=inputStream.read())!= -1)
// {
// outputStream.write(b);
// }
//
// inputStream.close();
// outputStream.close();
}
@PostMapping("showAll")
@ResponseBody
public Result findAll(HttpServletRequest request){
String token = request.getHeader("token");
DecodedJWT verify = JWTUtils.verify(token);
System.out.println(token);
int id = Integer.valueOf(verify.getClaim("id").asString());
List<Files> files = filesService.findByUserId(id);
return Result.succ(files);
}
@PostMapping("upload")
public Result upload(@RequestParam("file") MultipartFile aaa, HttpSession session) throws IOException {
User user = (User) session.getAttribute("user");
String oldfilename = aaa.getOriginalFilename();
String ext = "."+FilenameUtils.getExtension(aaa.getOriginalFilename());
String newfilename = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ UUID.randomUUID().toString().replace("-","")+ext;
System.out.println(newfilename);
long size = aaa.getSize();
String type = aaa.getContentType();
String url = "E:/idea_project";
// String realpath = ResourceUtils.getURL(url).getPath();
String dataFormat = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
String dataDirPath = url+"/"+dataFormat;
File file = new File(dataDirPath);
if (!file.exists()) file.mkdirs();
aaa.transferTo(new File(file,newfilename));
Files files = new Files();
files.setOldfilename(oldfilename);
files.setNewfilename(newfilename);
files.setType(type);
files.setSize((int) size);
files.setPath(dataDirPath);
files.setId(user.getId());
filesService.save(files);
return Result.succ("保存成功");
}
}