resteasy2:将文件从MultipartFormData转发到外部rest api

问题描述

在我的应用程序中,我需要将在我的rest api上载的文件转发到另一个api。我不需要对该文件做任何事情,只需将其重新发布即可。我看到我可以提取字节数组,文件名,内容类型等,并将其放入MultipartFormDataOutput中(目前还不确定如何)。但是,由于文件已经包含名称内容类型之类的所有内容,是否有一种简单的方法转发文件?我试图将身体部位作为InputStream中的MulitpartFormDataInput并将其添加MultipartFormDataOutput中,但这没用。

Maven依赖关系-依赖关系版本为2.3.8.SP4-redhat-2(旧版应用程序仍在JBoss6.3上运行):

        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-multipart-provider</artifactId>
            <scope>provided</scope>
        </dependency>

接收文件的端点的定义:

    @POST
    @Path(UPLOAD_PATH)
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile(
            MultipartFormDataInput fileUploadForm)

将包含其他元数据的文件发送到目标api:

    public ClientResponse createFile(String url,String MetaData,MultipartFormDataInput fileUploadForm) throws Exception {
       
        Map a = fileUploadForm.getFormDataMap();
        
        MultipartFormDataOutput formData = new MultipartFormDataOutput();
        formData.addFormData("Metadata",MetaString,MediaType.APPLICATION_JSON_TYPE);
        // Here I tried to get the body as InputStream
        formData.addFormData("file",fileUploadForm.getFormDataMap().get("file").get(0).getBody(InputStream.class,null),MediaType.APPLICATION_OCTET_STREAM_TYPE);
        
        ClientRequest request = new ClientRequest(url);
        request.body(MediaType.MULTIPART_FORM_DATA,formData);
        
        return request.post();
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)