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

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

你可能感兴趣的:(java,dfs,spring5)