java大文件上传时,通过Feign层时传输问题

我们在通过微服务SpringBoot时,通常是在service写好业务层代码,代码通过测试,再补充feign层次的代码。有的时候回发生IllegalStateException(请求状态异常)这种错误,以下是我在做java大文件上传时的一个经验教训,仅供参考

这个是我的Controller层代码,我们是通过form表单的形式接受前端的数据,所以用到了@ModelAttribute注解

@PostMapping("/uploadFile")
    public ResultData<Object> uploadFile(@ModelAttribute("param") MultipartFileParam param){
            String f;
            try {
                f = fileManageeService.chunkUploadByMappedByteBuffer(param);
            } catch (IOException e) {
                e.printStackTrace();
                return ResultData.getFalseResultVo("上传失败,格式错误!");
             }
            Map<String, Object> map = Maps.newHashMap();
            map.put("uploadStartus", 0);
            if (StringUtils.isEmpty(f)) {
                return ResultData.getSuccResultVo(map,false);
            }
            map.put("uploadStartus", 1);
            map.put("fileUrl", f);
            return ResultData.getSuccResultVo(map,false);
    }

按照常规形式,feign层也需要用@ModelAttribute注解,从而接受数据,但是这就会报IllegalStateException异常,参数确实接收到了,但走到映射层时,就会发生“MultipartFileParam“的这个实体类没有经过序列化,也就是说“MultipartFileParam“这个实体类不能映射到Controller层。

@PostMapping(value="/lecture/demand/uploadFile", produces = {
            MediaType.APPLICATION_JSON_UTF8_VALUE }, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public ResultData<Object> uploadFile( @RequestParam("chunkNumber") int chunkNumber,

    @RequestParam("chunkSize") long chunkSize,

    @RequestParam("totalChunks") int totalChunks,

    @RequestParam("urlCode") String urlCode,

    @RequestPart(value = "file", required = false) MultipartFile file,

    @RequestParam("identifier") String identifier);

后来我们把“MultipartFileParam“拆分成一个个参数,重新传递值,从而解决了“MultipartFileParam“不被序列化的问题

转载于:https://my.oschina.net/u/3993062/blog/3017726

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值