Spring integration 如何在spring集成中上载文件?

Spring integration 如何在spring集成中上载文件?,spring-integration,Spring Integration,我想上传一个文件,但仍然收到“无法转换请求:找不到适合预期类型[org.springframework.web.multipart.MultipartFile]的合适HttpMessageConverter”异常 政府如何解决这个问题 private RequestMapping createMappingFile(HttpMethod[] method, String... path) { RequestMapping requestMapping = new R

我想上传一个文件,但仍然收到“无法转换请求:找不到适合预期类型[org.springframework.web.multipart.MultipartFile]的合适HttpMessageConverter”异常

政府如何解决这个问题




    private RequestMapping createMappingFile(HttpMethod[] method, String... path) {
        RequestMapping requestMapping = new RequestMapping();
        requestMapping.setMethods(method);
        requestMapping.setConsumes(MediaType.MULTIPART_FORM_DATA_VALUE);
        requestMapping.setProduces(MediaType.APPLICATION_JSON_VALUE);
        requestMapping.setPathPatterns(path);
        return requestMapping;
    }

@Bean
    public IntegrationFlow httpPostFileUpload() {
        return IntegrationFlows.from(httpPostGateFileUpload())
                .channel("http.file.upload.channel").handle("fileEndpoint", "upload").get();
    }
    @Bean
    public MessagingGatewaySupport httpPostGateFileUpload() {
        // @RequestMapping
        HttpRequestHandlingMessagingGateway handler = new HttpRequestHandlingMessagingGateway();
        handler.setRequestMapping(createMappingFile(new HttpMethod[]{HttpMethod.POST}, "/api/file/upload"));
        handler.setStatusCodeExpression(fileParser().parseExpression("T(org.springframework.http.HttpStatus).BAD_REQUEST"));
        handler.setRequestPayloadType(ResolvableType.forClass(MultipartFile.class));
        handler.setHeaderMapper(fileHeaderMapper());
        return handler;
    }
FileEndpoint:

 public Message<?> upload(Message<MultipartFile>msg) {

        MultipartFile file = msg.getPayload();

        UserDetails loggedUser = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

        Optional<User> opUser = userRepository.findByUsername(loggedUser.getUsername());

        User user = opUser.orElseThrow(()->new ResponseStatusException(HttpStatus.NOT_FOUND,"User not found"));

        long date = new Date().getTime();

        File convertFile = new File(resourcePath+date+"_"+file.getOriginalFilename());
        try {
            FileOutputStream fout = new FileOutputStream(convertFile);
            fout.write(file.getBytes());
            fout.close();
...

请阅读一篇关于此事的文章:

如果有一个bean名为
MultipartResolver
(与Spring的
DispatcherServlet所期望的名称相同),HTTP入站端点将在上下文中定位一个
MultipartResolver
)。如果它找到了该bean,则在入站请求映射器上启用对多部分文件的支持。否则,当它尝试将多部分文件请求映射到Spring集成消息时,它将失败。有关Spring对
多部件解析器的支持的更多信息,请参阅Spring参考手册

还有一个关于的示例。

请阅读有关此问题的:

如果有一个bean名为
MultipartResolver
(与Spring的
DispatcherServlet所期望的名称相同),HTTP入站端点将在上下文中定位一个
MultipartResolver
)。如果它找到了该bean,则在入站请求映射器上启用对多部分文件的支持。否则,当它尝试将多部分文件请求映射到Spring集成消息时,它将失败。有关Spring对
多部件解析器的支持的更多信息,请参阅Spring参考手册

还有一个关于的示例


org.springframework.messaging.MessagingException: Could not convert request: no suitable HttpMessageConverter found for expected type [org.springframework.web.multipart.MultipartFile] and content type [multipart/form-data;boundary=--------------------------525212308988156732836650;charset=UTF-8]
    at org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport.extractRequestBody(HttpRequestHandlingEndpointSupport.java:513) ~[spring-integration-http-5.1.6.RELEASE.jar:5.1.6.RELEASE]
    ```