2016-07-13 6 views
1

私はファイルアップロードオプションと他の入力パラメータのホストを含​​むWebフォームを持っています。私は、Jerseyのリクエストハンドラでこれを処理する方法を探しています。メソッドのパラメータはファイルの入力となり、 "その他のすべてのパラメータ"となります。マルチパート/フォームデータファイルアップロード+ Jerseyの他のパラメータ

This questionは、ブラウザが別個のマルチパートオブジェクトとしてそれらを送信するため、カスタムモデルオブジェクトに他のパラメータを取得できないことを説明しています。私が試した次のことはMultivaluedMapで他のパラメータを取得した

@POST 
@Produces("text/html; charset=\"UTF-8\"") 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
public Page handlePost(@FormDataParam("icon") InputStream iconInputStream, 
     @FormDataParam("icon") FormDataContentDisposition iconContentDispositionHeader, 
     MultivaluedMap<String, String> formParams) { 
    ... 
} 

残念ながら、これはどちらか動作しません。

フォームには約20個のパラメータがあります(そのうちの1つはマルチセレクションオプションです)、メソッドパラメータとして1つずつ処理したくありません。クエリ可能な単一のオブジェクト内の他のすべてのパラメータを取得する方法はありますか?

+0

完璧に動作します:私はちょうどこのような一つRESTfulなサービスを終了しましたか?クエリパラメータ?他のマルチパートフィールド? –

+0

後者の場合は、 '@ FormDataParam'を使用してそれらのすべてを取得することもできます。値をフィールドの名前に設定するだけです。文字列パラメータを使用するだけです。一つのオブジェクトにすべてを取り込もうとするなら、 '@ BeanParam'を使うことができます。マルチパートデータにも有効です。あるいは、 'FormDataMultiPart'をパラメータとして使用し、すべてを手動で抽出することができます –

答えて

0

ポールが正しい方向を示唆したのは正しい方向です。 .... ....

@POST 
@Path("fileupload") 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
@Produces(MediaType.APPLICATION_JSON) 
public Response uploadFile(@FormDataParam("component") String system, @FormDataParam("purpose") String purpose, @FormDataParam("file") InputStream uploadedInputStream, 
     @FormDataParam("file") FormDataContentDisposition fileDetail) { 

}

そして、それはあなたがについて何のパラメータを取っている

関連する問題