1

Android および iOS アプリで使用する RESTful API を作成しようとしています。これまでのところ、サーバーで Jersey を使用してから、クライアント側で適切な http ライブラリを使用して実験してきました。現時点multipart/relatedでは、本文の最初の部分を形成する JSON を使用してリクエストの MIME タイプとして使用し、2 番目の部分として jpeg 画像を使用しています。

これまでのところ、サーバーへのリクエストを作成して406 Not Acceptableジャージーから取得する際に問題がありました。multipart/related主にメールの送信に使用されることに注意してください。multipart/related混合タイプのコンテンツをアップロードとしてサポートできる方法は実際にありますか、またはこのコンテキストでの使用法を完全に誤解していますか?

4

2 に答える 2

2

詳細については、このブログを参照してください。

http://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/

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

    String uploadedFileLocation = "d://uploaded/" + fileDetail.getFileName();

    // save it
    writeToFile(uploadedInputStream, uploadedFileLocation);

    String output = "File uploaded to : " + uploadedFileLocation;

    return Response.status(200).entity(output).build();
}

これは multipart/related の説明の一部であるため、代わりに multipart/form-data が必要になると思います。


Multipart/Related メディア タイプは、いくつかの相互に関連するボディ パーツで構成される複合オブジェクトを対象としています。Multipart/Related オブジェクトの場合 、構成するボディ パーツ
を個別に表示しても、適切な表示を実現できません。
Multipart/Related オブジェクトの content-type は type パラメータで指定されます。 「開始」パラメータが指定されている場合、コンテンツ ID を介して、オブジェクト ルートを含むボディ部分を
指します。
デフォルトのルートは
、マルチパート/関連ボディ内の最初のボディ パーツです。

この MIME タイプの詳細については、次を参照してください。

https://www.rfc-editor.org/rfc/rfc2387

于 2012-08-19T00:39:12.403 に答える
0

json本体と一緒に画像を送信する場合は、画像をbase64でエンコードし、base64文字列をjsonに含めることができます。次に、サーバー側で、文字列をbase64でデコードし、画像ファイルをblobstoreにアップロードします。こちらのファイルアップロードの例(ページの下部)をご覧くださいhttps://developers.google.com/appengine/docs/java/blobstore/overview

または、blobstoreに個別にアップロードして、アップロードされた画像のblobkeyを取得することもできます。次に、サーバーに投稿するjson本体にblobkeyを含めることができます。このアプローチを使用すると、新しい画像のアップロードを行う必要があるたびに、uploadurlを取得する必要があります。

于 2012-08-19T08:10:00.777 に答える