java后端一直接收不到前端传base64位的图片

文章讲述了在SpringBoot应用中处理文件上传时遇到的问题及解决方案。起初使用MultipartFile接收文件失败,然后尝试通过实体类接收参数也未成功。问题根源在于Header中的Content-Length设置错误,导致参数无法正确接收。修正Content-Length的值后,前端的数据能成功传递到后端并进行Base64解码处理。
摘要由CSDN通过智能技术生成

开始的代码:


    @PostMapping(value = "/api/upload")
    public Result<String> upload(MultipartFile fileStr) {
        // 分页查询
        return ResultUtil.success(mService.upload(fileStr));
    }

结果是为空:

 改成实体去接参数也不行。废话不多说,直接说解决方法。

 @Autowired
    private OpenMinioService minioService;
    @PostMapping(value = "/api/upload")
    public Result<String> upload(@RequestBody String fileStr) {
        // 分页查询
        return ResultUtil.success(mService.upload(fileStr));
    }

接收到参数,解析为输入流:

 //解码base64
            String dataStr = fileStr.replace("data:image/jpeg;base64,","");
            byte[] data = Base64.decodeBase64(dataStr);
            in = new ByteArrayInputStream(data);

postman的调用:

后来和前端对接过程中,直接传数据不带key的这种方式会被拦截,到不了后端,后来经比对。发现我的Headers中有个参数Content-Length被我写死了,且这个设置的长度比我实际参数小,所以一致接收不到参数,😓

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值