に私は私ジャージRESTfulなWebサービスを作成しましたがうまく動作するメソッドのシグネチャとして@Context HttpServletRequest request
を使用してファイルの多数をアップロードするを管理していました。
事は、私は繰り返しWebサービスは、私が思うと呼ばれるたびに必要なフィールドが存在するかどうかを確認するかしないファイルや.getFieldName();
の相対.getName();
と.isFormField();
方法、および.getString();
方法でチェックする必要があり、他のフォームフィールドを取得するために、ありますいくつかの他のフィールドがある場合は、時間がかかり、高価なプロセスはほとんどありません。複数ファイルのアップロードジャージ
簡単なアプローチは、使用するWebサービスを渡す必要があるクライアントのパラメータが、が、私は一度に複数のファイルをアップロードすることはできませんよです問題にさらさ@FormDataParam
を使用することでした。
メディアタイプまたはenctypeがmultipart/form-data
の場合、request.getParameter("field1");
を使用して他のフォームフィールドを取得することもできません。
私は一緒に@FormDataParam
と@Context HttpServletRequest request
の両方を組み合わせることをしようとしたときはいつでも、それは例外スロー:ServletFileUpload
クラスの.parseRequest(request);
方法で要求を解析中
org.apache.tomcat.util.http.fileupload.FileUploadException: Stream closed
を。
良いアプローチをお勧めします。どのようにして、複数のファイルをアップロードするには、必要なフォームフィールドをジャージーの@FormDataParam
と同じように簡単に取得できますか。複数のファイルのアップロードのための
アプローチ:
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("/multipleFiles")
public String restDemo(@Context HttpServletRequest request)
{
//...code goes here
}
マイ形式:
出力:
(リクエストを解析した後)フィールド1> ABC
フィールド2> XYZ
Chrysanthemum.jpgサイズ:879394
Desert.jpgサイズ:845941
Hydrangeas.jpgサイズ:595284
Jellyfish.jpg サイズ:775702
@FormDataParamを使用するときに複数のファイルをアップロードできない理由は分かりませんが、 「複数のファイル」とは、アップロードするファイルの数が可変であることを意味します(フォームに「ファイルを追加」をクリックして追加のアップロードフィールドを取得できます)。 – Jonas
@Jonasこれは、ユーザーがUIからファイルを追加できるのですが、 '@ FormDataParam'を使ってすべてのファイルに追いつくにはどのようなアプローチが必要ですか?私の知る限り、複数のファイルを単一の '@FormDataParam'にマッピングすることはできません。 – agpt