Springboot2中文件上传报java.io.FileNotFoundException: C:\Users\WIzarder\AppData\Local\Temp\tomcat.8080.589

Springboot2文件上传中用MultipartFile接受文件,上传报错java.io.FileNotFoundException: C:\Users\WIzarder\AppData\Local\Temp\tomcat.8080.5893235156551690444\

原因:MultipartFile在调用方法transferTo把文件上传到指定的路径后,会自动关闭这个流,后面无法再调用这个方法。因此需要用异步方法处理一下
解决:用异步方法来上传可以解决

  @PostMapping("/upload")
    public String upload(@RequestParam("email") String email,
                         @RequestParam("password") String password,
                         @RequestPart("headimg")MultipartFile multipartFile,
                         @RequestPart("lifeimg")MultipartFile[] multipartFiles) throws IOException {
       int length = multipartFiles.length;
        log.info("email={},password={},headImg={},lifeImg{}",email,password,multipartFile.getSize(),
                multipartFiles.length);
        uoloadImg(multipartFile,multipartFiles);//用异步方法来上传完美解决

        return "index";
    }
    @Async
    public void  uoloadImg(MultipartFile head,MultipartFile[] photos) throws IOException {
        if (photos.length > 0){
            for (MultipartFile file : photos) {
                if (!file.isEmpty()){
                    String originalFilename = file.getOriginalFilename();
                    file.transferTo(new File("G:\\上传图片\\"+originalFilename));
                }

            }
        }
        if (!head.isEmpty()){
            String originalFilename = head.getOriginalFilename();
            head.transferTo(new File("G:\\上传图片\\" + originalFilename));
        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值