当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud假MultipartFile上载

百里锋
2023-03-14

我在Spring Cloud上有客户端角色微服务和服务器角色微服务,我在客户端微服务上有FeignClient bean

@RequestMapping(value = {"/files"}, consumes = {"multipart/form-data"}, method = {RequestMethod.POST}
)
ResponseEntity uploadFile(@RequestBody MultipartFile file, @RequestParam("someParam") String someParam)
@Configuration
public class FeignConfiguration {

    @Autowired
    private ObjectFactory<HttpMessageConverters> messageConverters;

    @Bean
    public Encoder feignFormEncoder() {
        return new SpringFormEncoder(new SpringEncoder(messageConverters));
    }
}
@FeignClient(name = "destination-microservice-id", configuration = FeignConfiguration.class)

MultipartFile接口的实现应该是什么,以及如何创建实例以继续从客户端微服务进行调用?当使用来自Spring的用于测试目的的MockMultipartFile实现时,大多数都可以工作。文件被传输,“someparam”值也被传输。但是,作为MultipartFile实例的其他字段的内容类型和文件名不会传递给服务器。

有什么办法接近它吗?

共有1个答案

李永寿
2023-03-14

要从您的客户端微服务应用程序调用您的假客户端界面,您可以使用类似的东西。

public void uploadFile(File file) {

    DiskFileItem fileItem = (DiskFileItem) new DiskFileItemFactory().createItem("file",
                                                MediaType.TEXT_PLAIN_VALUE, true, file.getName());

    try (InputStream input = new FileInputStream(file); OutputStream os = fileItem.getOutputStream()) {
        IOUtils.copy(input, os);
    } catch (Exception e) {
        throw new IllegalArgumentException("Invalid file: " + e, e);
    }

    MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
    feignClient.uploadFile(multipartFile);
}

DiskFileItem类来自commons-fileupload库。

 类似资料:
  • 我正在将JavaWeb应用程序转换为Spring框架,并感谢一些关于我在文件上传方面面临的问题的建议。原始代码是用org.apache.commons.fileupload. > Spring多部分文件是否包装了组织?apache.commons.文件上传,或者我可以从我的POM文件中排除这个依赖关系? 我看到了以下示例: 最初我试图按照这个例子,但总是得到一个错误,因为它无法找到这个请求参数。因

  • eureka Standalone Mode Peer Awareness Standalone Mode java -jar springcloud-eureka-0.0.1.jar Cluster Mode java -Deureka.instance.hostname=eureka01 -Deureka.client.serviceUrl.defaultZone=http://eureka0

  • 我想上传带有spring-boot和vue的文件。但是,我有一个错误“415:Unsupported MediaType”。 这是我的Spring启动控制器。 而且,这是我的vue代码。 我尝试,但遇到同样的错误。我该如何修复它?

  • Uncode-SpringCloud Uncode-SpringCloud是一个基于最新的Spring Cloud2.0的微服务开发脚手架,用于快速构建中大型系统的基础框架。将开发中遇到的问题和生产中所碰到的各种坑整理归纳,形成相应的解决方案融合到框架中。 功能概述 配置中心:Apollo。 服务注册与发现:Eureka,支持开发可以对节点状态进行操作。计划支持Nacos。 服务网关:Spring

  • 我有一个控制器,它在上接受一个名为的类。控制器方法看起来像这样: 第一控制器: 属性之一的类型为。 现在,我正在尝试添加某种包装器控制器(将在另一台服务器上运行),它也接受,并将请求转发给第一个控制器: 第二(包装)控制器: 当我向第一个控制器发送请求时: 无法写入JSON:找不到java类的序列化程序。伊奥。FileDescriptor,并且没有发现创建BeanSerializer的属性(为了避

  • 我想在上传使用ConstraintValidator时检查文件扩展名。如果文件扩展名没有在注释中指定,那么用户应该会得到常见的约束验证错误响应。但是当它发生时,会发生此异常 和用户得到坏请求页面 我的类:注解: 类上传文件类型验证器: 和控制器(永不到达,因为isValid总是返回false: 为什么会发生这种异常,以及如何避免?