3

これを実装する最良の方法は次のとおりです。

私のアプリケーションでは、ユーザーが画像をアップロードできます。これは、「multipart/form-data」としてエンコードされた RESTful サービスを介して行われます。

ここで、サービスの本文では、このファイルを保存する必要はありませんが、別のサービスに渡して呼び出すために使用したいと考えています。したがって、必ずしもファイルをディスクに保存する必要なく、Jersey Client API を使用して別の呼び出しを行い、「一時」ファイルと思われるファイルを渡すことができます。

これが私のコードの一部です:

@Path("/file")
public class UploadFileService {

    @POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile(
        @FormDataParam("file") InputStream uploadedInputStream,
        @FormDataParam("file") FormDataContentDisposition fileDetail) {

            //Given that I have ‘uploadedInputStream’ can I just pass this  
            //directly into the second call, below?

            ClientConfig config = new DefaultClientConfig();
            Client client = Client.create(config);
            WebResource wr = client.resource(baseURI);
            ClientResponse response = wr.type("image/*")
                                        .entity(uploadedInputStream)   //legal??
                                        .post(ClientResponse.class);

    }
}

上記の代替手段は、ファイルを一時的に保存してから、 java.io.File のインスタンスを entity() メソッドに渡すことだと思います。しかし、これで逃げることは可能ですか?

4

1 に答える 1

-1

はい、これでうまくいくはずです。そうでない場合は、http://java.net/jira/browse/JERSEYでバグを報告してください。

于 2012-06-13T17:38:38.000 に答える