ホームページ >Java >&#&チュートリアル >Jersey RESTful WebサービスにファイルとJSONデータを同時にアップロードするにはどうすればよいですか?

Jersey RESTful WebサービスにファイルとJSONデータを同時にアップロードするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-06 14:44:11733ブラウズ

How to Upload a File and JSON Data Simultaneously in a Jersey RESTful Web Service?

Jersey RESTful Web サービス内の他のオブジェクトとともにファイルをアップロードする

問題:

Jersey を使用して単一の REST API 呼び出しで画像と従業員データを含む従業員レコードを作成したいと考えていますが、現在の実装ではChrome Postman のエラー。

答え:

ファイルのアップロードと JSON データの同時送信を有効にするには、マルチパート リクエストに JSON データを含める必要があります。コード スニペットの修正バージョンを次に示します。

@POST
@Path("/upload2")
@Consumes({MediaType.MULTIPART_FORM_DATA})
public Response uploadFileWithData(
        @FormDataParam("file") InputStream fileInputStream,
        @FormDataParam("file") FormDataContentDisposition contentDispositionHeader,
        @FormDataParam("emp") Employee emp) {

//..... business login

}

主な変更点は、マルチパート リクエストに従業員データを含めるために @FormDataParam("emp") を追加したことです。

追加メモ:

  • 「パラメーターのインジェクション ソースが見つかりません」というエラーが発生した場合public javax.ws.rs.core.Response" タイプの新しいコードを使用するときは、マルチパート リクエストを処理するための適切な Jersey 構成がサーバー コード内に配置されていることを確認してください。
  • ブラウザのような一部の REST クライアントデフォルトの FormData 機能は、個々のマルチパート パーツの Content-Type の設定をサポートしていない場合があります。これに対処するには、サーバー側でデータを逆シリアル化する前に、JSON 部分の Content-Type を明示的に設定します:
@POST
@Path("upload2")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFileAndJSON(@FormDataParam("emp") FormDataBodyPart jsonPart,
                                  @FormDataParam("file") FormDataBodyPart bodyPart) { 
     jsonPart.setMediaType(MediaType.APPLICATION_JSON_TYPE);
     Employee emp = jsonPart.getValueAs(Employee.class);
}

以上がJersey RESTful WebサービスにファイルとJSONデータを同時にアップロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。