Request header is too large

背景

微服务接口中有一个业务,需要调用客户端接口转入了base64编码后的字符编码文件

原因:

我们使用OpenFeign调用时,默认会将参数header中也存放一份,所以就导致了header is too large

解决方案:

1、去掉转入了base64编码的 Feign接口,直接复用原来的文件上传接口

2、接将Form表单中的base64字符串,转为MultipartFile对象 

    @PostMapping("/base64/upload")
    public R<String> upload(@RequestParam(value = "file",required = false) MultipartFile file , @RequestParam(value = "base64") String base64) {
        if (StringUtils.isBlank(base64) ) {
            return R.fail("Base64 string is empty");
        }
        R<SysFile> fileResult = remoteFileService.upload(convert(base64,"tmpPic"));
        ...
    }

base64Str 转 MultipartFile 对象

    private static MultipartFile convert(String base64String, String fileName) {
        // 解析base64字符串,分割出编码格式和数据
        String[] base64Info = base64String.split(";base64,");
        String base64Content = base64Info[1]; // 数据部分
        String contentType = base64Info[0].split(":")[1].split(";")[0]; // 文件类型
        // 解码Base64字符串为字节数组
        byte[] bytes = Base64.getDecoder().decode(base64Content);
        // 创建MockMultipartFile对象并设置文件内容和文件名
        return new MockMultipartFile(fileName, fileName +"." + contentType.split("/")[1], contentType, bytes);
    }

或参考下面解决方案

Feign请求中Request header is too large 解决方案_feign request header is too large-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值