1

春ベースのAPIは次のとおりです。

@RequestMapping(value = ControllerConstants.FILE_UPLOAD_URI, method = RequestMethod.POST)
    public @ResponseBody
    boolean processUpload(@RequestParam("file") MultipartFile file, @RequestParam("accessionId") String accessionId, @RequestParam("protocol") String protocol, HttpServletRequest request) throws IOException {        
        logger.info("upload file: {} with accessionId: {} and protocol:{}",file.getOriginalFilename(),accessionId,protocol);         
        return dataManagerService.writeFile(file, protocol, accessionId);
    }

これが私の最善の努力です:

FormDataMultiPart part = new FormDataMultiPart()
                .field("accessionId", returnedAccessionId)
                    .field("protocol", protocol)
                    .field("name", file.getName())
                    .field("file", stream, MediaType.APPLICATION_OCTET_STREAM_TYPE);    

            MultivaluedMap<String, String> params = new MultivaluedMapImpl();
            params.add("file",  file.getAbsolutePath());
            params.add("accessionId", returnedAccessionId);
            params.add("protocol", protocol);       

            WebResource resource2 = client.resource(agent.getServerEndpointUri() + "/novax/service/dataManager/upload");
            ClientResponse response4 = resource2
                    .queryParams(params)
                    .type(MediaType.MULTIPART_FORM_DATA_TYPE)
                    .post(ClientResponse.class, part);

応答は404です
。2つの質問:-Spring APIは適切に定義されていますか?-Jerseyクライアントを使用してAPIを適切に呼び出すにはどうすればよいですか?

4

1 に答える 1

0

OK、次のコードを使用して動作させました。

        FormDataMultiPart part = new FormDataMultiPart()
                .field("accessionId", returnedAccessionId)
                .field("protocol", protocol)
                .field("name", file.getName());
        part.bodyPart (new FileDataBodyPart("file", file, MediaType.MULTIPART_FORM_DATA_TYPE)); 

        WebResource resource2 = client.resource(pathOrUrl);
        ClientResponse response4 = resource2
                .type(MediaType.MULTIPART_FORM_DATA)
                .post(ClientResponse.class, part);

「bodyPart」メソッドを使用する必要がありましたが、これは「ビルダー」パターンでは機能しないようです。

于 2012-12-11T03:01:12.297 に答える