之前老项目用的spring4版本,现在升级成spring5版本,重新把文件中心搬过来,发现原先有一段
MultipartFile multiFile = XXX;
File file = File.createTempFile(System.currentTimeMillis() + "", prefix);
multiFile.transferTo(file);
现在运行报错java.nio.file.FileAlreadyExistsException
文件已存在?不能写入?
可能是File.createTempFile方法已经把临时文件创建出来了?
然后换成了下面的这种方式就可以了...
/**
* 文件上传
*
* @param multipartFile
* @return
*/
public OSSClientMessage uploadMultipartFile(MultipartFile multipartFile) {
// 获取文件名
String fileName = multipartFile.getOriginalFilename();
// 获取文件后缀
String prefix = fileName.substring(fileName.lastIndexOf("."));
// 用当前时间作为文件名,防止生成的临时文件重复
Path tempFile = null;
try {
tempFile = Files.createTempFile(System.currentTimeMillis() + "", prefix);
multipartFile.transferTo(tempFile);
OSSClientMessage<FileBytesResponse> ossClientMessage = this.getOSSClient().uploadFile(tempFile.toFile());
return ossClientMessage;
} catch (Exception e) {
e.printStackTrace();
}finally {
if(tempFile.toFile().exists()){
tempFile.toFile().delete();
}
}
return null;
}
拿到temp文件的Path,不提前创建就可以使用了