这里我用的是:
FileUtils.copyInputStreamToFile();方法
需要引入是:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
@ResponseBody
@PostMapping("/update")
public String updateFile(@RequestParam("files") MultipartFile[] files) throws IOException{
if (null != files && files.length > 0) {
for (MultipartFile file : files) {
// 测试MultipartFile接口的各个方法
log.info("文件类型ContentType:" + file.getContentType());
log.info("文件组件名称Name:" + file.getName());
log.info("文件原名称OriginalFileName:" + file.getOriginalFilename());
log.info("文件大小Size:" + file.getSize() + "byte or " + file.getSize() / 1024 + "KB");
try {
//获取后缀名 .jpg .txt
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().indexOf("."));
//生成临时目录
File savedFile = new File("D:\\DEV_ENV\\upload\\test\\"+file.getOriginalFilename());
// 判断路径是否存在,不存在则新创建一个
if (!savedFile.getParentFile().exists()) {
savedFile.getParentFile().mkdirs();
}
// 使用下面的jar包
FileUtils.copyInputStreamToFile(file.getInputStream(),savedFile);
InputStream inputStream = new FileInputStream(savedFile);
//关闭流,才能进行删除临时文件
inputStream.close();
//程序结束时,删除临时文件
deleteFile(savedFile.getAbsolutePath());
} catch (IOException e) {
log.info(e.getMessage());
return file.getOriginalFilename() + "file error";
}
}
return "success";
}
return "success";
}
public static boolean deleteFile(String fileName){
File file = new File(fileName);
if(file.isFile() && file.exists()){
Boolean succeedDelete = file.delete();
if(succeedDelete){
System.out.println("删除单个文件"+fileName+"成功!");
return true;
}
else{
System.out.println("删除单个文件"+fileName+"失败!");
return true;
}
}else{
System.out.println("删除单个文件"+fileName+"失败!");
return false;
}
}
如有不足,欢迎各位吐槽!!!