MultipartFile文件上传300M以上,报异常java.lang.OutOfMemoryError: Java heap space

原因:

FileCopyUtils.copy(mf.getBytes(), savefile);

把MultipartFile转成字节流再存入文件

解决:

将流存到文件中
try {
    FileOutputStream output = openOutputStream(destination);
    try {
        IOUtils.copy(source, output);
        output.close();
    } finally {
        org.apache.hadoop.hbase.shaded.org.apache.commons.io.IOUtils.closeQuietly(output);
    }
} finally {
    IOUtils.closeQuietly(source);
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当使用`transferTo()`方法将MultipartFile对象保存到目标文件时,如果目标文件已经存在,会抛出`java.nio.file.FileAlreadyExistsException`异常。 要解决这个问题,你可以考虑以下几种方法: 1. 删除目标文件:在调用`transferTo()`方法之前,先判断目标文件是否存在,如果存在则删除。可以使用`Files.deleteIfExists(Path path)`方法来删除文件。 ```java import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; // ... Path destPath = Path.of("目标文件路径"); if (Files.exists(destPath)) { Files.delete(destPath); } multipartFile.transferTo(destPath.toFile()); ``` 2. 使用不同的目标文件名:如果不要求使用相同的文件名保存上文件,可以为每个上文件生成一个唯一的文件名,避免文件重名。 ```java import java.util.UUID; import org.apache.commons.io.FilenameUtils; // ... String originalFilename = multipartFile.getOriginalFilename(); String extension = FilenameUtils.getExtension(originalFilename); String newFilename = UUID.randomUUID().toString() + "." + extension; Path destPath = Path.of("目标文件夹路径", newFilename); multipartFile.transferTo(destPath.toFile()); ``` 3. 覆盖目标文件:如果允许覆盖已存在的目标文件,可以使用`StandardCopyOption.REPLACE_EXISTING`选项来覆盖。 ```java import java.nio.file.StandardCopyOption; // ... Path destPath = Path.of("目标文件路径"); multipartFile.transferTo(destPath.toFile(), StandardCopyOption.REPLACE_EXISTING); ``` 根据你的具体需求,选择适合的解决方法来处理`java.nio.file.FileAlreadyExistsException`异常

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值