关于multipartFile.transferTo方法报错java.nio.file.FileAlreadyExistsException

mac2025-01-08  18

之前老项目用的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,不提前创建就可以使用了

最新回复(0)