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

如何在微服务架构中使用外设客户端上传多个多部分文件

卞俊贤
2023-03-14

我正在尝试使用Faign client上传多个多部分文件,但我无法这样做。

经过一些研究,文件上传使用Faign-多部分/表单数据

文件上传spring云虚拟客户端

数组Multipart[]文件上传使用FIGN客户端

客户端:

@FeignClient(name = "file-server", configuration = {FileUploadService.MultipartSupportConfig.class})
@RequestMapping
public interface FileUploadService {

    @RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = MULTIPART_FORM_DATA_VALUE)
    public @ResponseBody
    List<FileUploadResponseDTO> handleFileUpload(@RequestPart(name = "file") MultipartFile[] file);
    @Configuration
    public class MultipartSupportConfig {

        @Autowired
        private ObjectFactory<HttpMessageConverters> messageConverters;

        @Bean
        @Primary
        @Scope("prototype")
        public Encoder feignEncoder() {
            return new SpringFormEncoder(new SpringEncoder(messageConverters));
        }
    }

我正在尝试访问的模块:

@PostMapping(value = "/upload", consumes = MULTIPART_FORM_DATA_VALUE)
@ApiOperation(UPLOAD_FILE)
public List<FileUploadResponseDTO> uploadFiles(@RequestPart(name = "file") MultipartFile[] file){
    System.out.println("****hello ****");

    return fileUploadService.uploadFiles(file);
}

上面的工程罚款为一个单一的Multipart文件,但它显示以下错误为多个文件:

Servlet.service()为servlet[调度Servlet]在上下文中与路径[]抛出异常[请求处理失败;嵌套异常是feign.codec.EncodeExcture:无法写入请求:没有找到适合的HttpMessageConzer请求类型[[Lorg.springframework.web.multipart.MultipartFile;]和内容类型[Multipart/form-data]]具有根本原因feign.codec.EncodeExcture:无法写入请求:没有找到适合请求类型[[Lorg.springframework.web.multipart.MultipartFile;]和内容类型[Multipart/form-data]

共有1个答案

祝昊东
2023-03-14

您应该在外部配置期间设置编码器:

public class FeignSimpleEncoderConfig {
    @Bean
    public Encoder encoder() {
        return new FormEncoder();
    }
}
 类似资料:
  • 我在spring boot中编写了一个restful web服务来接收文件。 如何将文件从客户端java代码上传到web服务。而不是AJAX调用或HTML页面表单多部分请求? 下面的代码使用JSON对象调用web服务。像这样,我想在上面写的web服务中接收文件。

  • 文件的内容类型被生成为'application/octet-stream',我希望它是'application/xml',如何设置文件的内容类型?

  • null 或者所有微服务都应该从一个特殊的身份和访问API获得用户的身份,该API将基于访问令牌公开用户?

  • 问题内容: 我正在实现Web服务的客户端(维护Web服务的家伙反应迟钝。。)我使用axis和WSDL2Java生成Java类,并且可以在身份验证服务上调用其登录方法好的,然后获取sessionId(例如z4zojhiqkw40lj55kgtn1oya)。但是,似乎我无法在任何地方将此sessionId用作参数。甚至在登录后直接调用其hasSession()方法也会返回false。我设法通过在此服务

  • 如果我们使用spring boot构建所有微服务,那么可以使用Eureka服务器(@EnableEurekaServer)发现所有微服务(@EnableEurekaClient)。如果某些微服务是使用其他技术构建的,那么在云(PCF、AWS等)中如何实现发现、负载平衡、反向代理(网关)? 我在网上读了很多关于微服务的博客,我没有得到适当的信息。

  • 这里有很多链接建议使用多部分/表单数据,以及如何在这里上传文件。对于通过CURL命令上载的多个文件的组合,以及接受FormDataMultiPart的REST服务,无法真正找到一个。 当前正在使用的代码如下所示: 我尝试调用该服务的CURL是: 卷曲-X柱“http://localhost:37200/api/sample-批量“-H”接受:应用程序/json“-H”内容类型:多部分/表单数据“-