最近在springboot中使用到的文件上传下载顺便记录一下
1、多文件上传
public void fileup(@RequestParam("file") MultipartFile[] file)throws Exception {
//设置上传路径
String filePath ="F:\\file\\upload";
for(int i=0;i<file.length;i++){
//从文件数组中取出数组
MultipartFile file1= file[i];
//获取上传文件的原名
String fileNames= file1.getOriginalFilename();
//截取后缀
String lastName=fileNames.substring(fileNames.lastIndexOf("."));
//文件名防止重名下载的时候从数据库取出文件原名就行了
String uuid=UUID.randomUUID().toString();
String fileid=uuid+lastName;
//文件上传的file
File file = new File(filePath+File.separator+fileid);
//判断文件上一级目录是否存在不存在就创建
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
try {
//执行上传
MultipartFile.transferTo(file);
} catch (Exception e) {
e.printStackTrace();
}
}else{
try {
MultipartFile.transferTo(file);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
2、文件下载
public ResponseEntity downLoad(String fileid,HttpServletRequest ServletRequest) throws Exception{
UserInfo user = (UserInfo) ServletRequest.getSession().getAttribute("session_user");
//获取文件名,这里是从数据库中查询获取的
String filename=fls.findone(fileid).getFile_name();
//获取文件路径,这里也是数据库中获取的
String filepath=fls.findone(fileid).getFile_path();
FileSystemResource fileSystemResource=new FileSystemResource(filepath);
HttpHeaders HttpHeaders=new HttpHeaders();
//在请求头中设置下载的默认信息
HttpHeaders.add("Content-Disposition","attachment; filename="+ URLEncoder.encode(filename, "UTF-8"));
return ResponseEntity.ok()
.headers(HttpHeaders)
.contentLength(fileSystemResource.contentLength())
//以流的方式下载
.contentType(MediaType.parseMediaType("application/octet-stream"))
.body(new InputStreamResource(fileSystemResource.getInputStream()));
}