栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

记一次让人恶心的springcloud文件上传问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记一次让人恶心的springcloud文件上传问题

本来的写法:客户端
@ApiOperation(value = "融资申请上传文件存储")
@RequestMapping(path = "/b/v1/external/gateway/adapter/aws/object/save", method = RequestMethod.POST)
ResponseEntity objectSave(@ApiParam("融资申请文件") @RequestParam("file") MultipartFile file,
                                  @ApiParam("文件名") @RequestParam("fileName") String fileName,
                                  @ApiParam("客户号") @RequestParam("custCode") String custCode,
                                  @ApiParam("业务类型") @RequestParam("businessType") String businessType,
                                  @ApiParam("文件后缀") @RequestParam("fileType") String fileType,
                                  @ApiParam("上传时间") @RequestParam("uploadDate") String uploadDate);

然后各种报错,不列出了,搞了整整3天。直接帖正确写法

客户端:

@FeignClient(value = "bis-zyhy", configuration = FeignSupportConfig.class)
public interface BisZyhyCommonServiceInvoke {
@ApiOperation(value = "融资申请上传文件存储")
    @RequestMapping(path = "/b/v1/external/gateway/adapter/aws/object/save", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    ResponseEntity objectSave(@ApiParam("融资申请文件") @RequestPart("file") MultipartFile file,
                                      @ApiParam("文件名") @RequestParam("fileName") String fileName,
                                      @ApiParam("客户号") @RequestParam("custCode") String custCode,
                                      @ApiParam("业务类型") @RequestParam("businessType") String businessType,
                                      @ApiParam("文件后缀") @RequestParam("fileType") String fileType,
                                      @ApiParam("上传时间") @RequestParam("uploadDate") String uploadDate);

}

添加FeignSupportConfig

package cn.com.fero.configuration;

import feign.form.spring.SpringFormEncoder;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.cloud.netflix.feign.support.SpringEncoder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;



@Configuration
public class FeignSupportConfig {


    @Autowired
    private ObjectFactory messageConverters;

    @Bean
    public SpringFormEncoder feignFormEncoder() {
        return new SpringFormEncoder(new SpringEncoder(messageConverters));
    }


}

添加依赖:


			io.github.openfeign.form
			feign-form
			3.3.0
		
		
			io.github.openfeign.form
			feign-form-spring
			3.3.0
		
		
			commons-fileupload
			commons-fileupload
			1.3.3
		

服务端也要改为@RequestPart

    @ApiOperation(value = "保存对象", notes = "")
    @RequestMapping(value = "object/save", method = RequetstMethod.POST)
    public JsonResponse objectSave(@RequestPart("file") MultipartFile file, @RequestParam String fileName,
                                   @RequestParam String custCode, @RequestParam String businessType, @RequestParam String fileType, @RequestParam String uploadDate) throws IOException {
        String objectKey = businessType + "/" + uploadDate + "_" + fileName;
        PutObjectResult result = AWSObjectSaveUtils.uploadFileInputStream(custCode, objectKey, file.getInputStream());
        Map resultMap = new HashMap();
        resultMap.put("serialNo", result.getETag());
        log.debug("外部接口-对象存储操作 保存对象 结束");
        return JsonResponse.newInstance().setMessage("success").setSuccess(true).setTimestamp(new Date()).setData(resultMap);
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396720.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号