Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringCloud虚拟多部分文件上传_Java_Spring_Multipartform Data_Spring Cloud Feign - Fatal编程技术网

Java SpringCloud虚拟多部分文件上传

Java SpringCloud虚拟多部分文件上传,java,spring,multipartform-data,spring-cloud-feign,Java,Spring,Multipartform Data,Spring Cloud Feign,我在SpringCloud上有客户端角色microservice和服务器角色microservice 我在客户端microservicewith方法上假装客户端bean接受这样的多部分文件 @RequestMapping(value = {"/files"}, consumes = {"multipart/form-data"}, method = {RequestMethod.POST} ) ResponseEntity uploadFile(@RequestBody MultipartFil

我在SpringCloud上有客户端角色microservice和服务器角色microservice 我在客户端microservicewith方法上假装客户端bean接受这样的多部分文件

@RequestMapping(value = {"/files"}, consumes = {"multipart/form-data"}, method = {RequestMethod.POST}
)
ResponseEntity uploadFile(@RequestBody MultipartFile file, @RequestParam("someParam") String someParam)
使用这两个库: “io.github.openfeign.form:feign-form:3.0.3” “io.github.openfeign.form:false-form-spring:3.0.3”

可以按如下方式配置文件上传的外挂:

@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接口的实现应该是什么,以及如何创建实例以继续从客户端microservice调用? 当使用来自Spring的MockMultipartFile实现进行测试时,它最有效。文件被传输,“someParam”值也被传输。但是,作为MultipartFile实例的其他字段的内容类型和文件名不会传递给服务器


有什么办法吗?

要从你的客户端微服务应用程序调用你的虚拟客户端界面,你可以使用类似的方法

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库。希望有帮助。

除MockMultipartFile之外的另一个实现是Spring的CommonMultipartFile类。我见过这个实现,但它看起来像是为服务器端处理创建的。我尝试了这个解决方案,在服务器端,但在客户端没有看到错误将数据室上传到[[datauploadClient#uploadFile(MultipartFile,String,String,String,String,boolean)]期间出现400错误:[400]:[]是否可以增加服务器端的日志记录以查看问题?