postman文件没有上传文件但是后台却显示有文件

@RestController
@RequestMapping("/v2")
public class TestController {

    protected Logger logger = LoggerFactory.getLogger(this.getClass());

    @PostMapping (value = "/file")
    public void addFile(@RequestParam MultipartFile file) throws IOException {
        String name = file.getName();
        byte[] bytes = file.getBytes();
        int length = bytes.length;
        String originalFilename = file.getOriginalFilename();
        String contentType = file.getContentType();

        logger.info("getName:{}", name);
        logger.info("bytes.length:{}", length);
        logger.info("getOriginalFilename:{}",originalFilename);
        logger.info("getContentType:{}",contentType);
    }

}

一.问题描述:

   在上传文件的时候,我在使用postman传文件的时候,明明什么都没有传,但是却还是能进入到下面的if判断中,很迷惑。

if(file !=null){
   //执行操作
}

二.分析:

原因: 是因为请求头里多了一行Content-Type:multipart/form-data,但是你请求不勾选Content-Type时,他后端就会报500错误。这一行的意思是Postman向后端指明,我传输的是文件类型的,当没有给后端传文件时。后端也还是会接收到一个文件,只不过这个文件是个空文件夹,所以在判断文件是否向后端传递的时候,不能单单判断文件是否为null,还需要判断文件的大小是否>0。

1.正常传文件

 后端日志显示:

2.没有传文件

 后端日志显示传过来的是一个空文件

 3.不勾选Content-Type

后端报错:现在的请求不是一个文件传输请求

 

三.解决:

当你什么都不传的时候,file!=null,只不过他的文件大小为0,所以需要判断文件的大小才可以知道文件是否后端传

 if(file!=null && file.size()>0 ){

    //执行操作

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值