1

動的な数の<input type='file' />ファイルとテキストボックスを含むhtmlフォームがあります<input type='text' />。ジャージのバックエンドでこのすべてのデータを取得するにはどうすればよいですか?..次のような静的な数の入力に対して実行しました。

@POST
    @Path("post")
    @Consumes("multipart/form-data")
public Response postCategory(@FormDataParam("text1") String text1,FormDataMultiPart  fm,
            @FormDataParam("file1") InputStream file1,
            @FormDataParam("text2") String text2,
            @FormDataParam("file2") InputStream file2) {

        System.out.println("CategoryService.postCategory()");
        System.out.println("text1:" + text1);
        System.out.println("text2:" + text2);

    }
4

3 に答える 3

3

FormDataMultiPart を使用して、フィールド名またはフィールド インデックスのいずれかですべてのフォーム フィールド値を取得できます。

    @POST
    @Consumes("multipart/form-data")
    public Response create(FormDataMultiPart multiPart ) {

        String text1 = multiPart.getField("text1").getEntityAs(String.class);
        byte[] file1 = multiPart.getField("file1").getEntityAs(byte[].class);

        String text2 = multiPart.getBodyParts().get(2).getEntityAs(String.class);
        byte[] file2 = multiPart.getBodyParts().get(3).getEntityAs(byte[].class);

        return Response.ok().build();
    }
于 2012-12-10T02:30:40.840 に答える
1

おそらくこれはあなたが探しているものです:

  @POST
  @Consumes("application/x-www-form-urlencoded")
  public void post(MultivaluedMap<String, String> formParams) {

  }

Mapそれができたら、ほとんどすべてのことができます。マップにそのキーが含まれているかどうかを連結file + iして確認し、含まれている場合は、マップにそのiようなキーがない場所まで値を取得できます。

于 2012-12-09T18:28:28.417 に答える
0

次のコードが役立つことを願っています。

@POST
@Path("/fileupload")
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
        final FormDataMultiPart multiPart) {
    Map<String,List<FormDataBodyPart>> formFields = multiPart.getFields();
    try {
        dir = "/yourdir/";

        for (Map.Entry<String,List<FormDataBodyPart>> e : formFields.entrySet()) {
            String fieldname = e.getKey(); // Field name of the form, you can add or check the form name here
            List<FormDataBodyPart> bodyParts= e.getValue();
            if (bodyParts != null) {
                for (int i = 0; i < bodyParts.size(); i++) {
                    BodyPartEntity bodyPartEntity = (BodyPartEntity) bodyParts.get(i).getEntity();
                    String fileName = bodyParts.get(i).getContentDisposition().getFileName();
                    String path = dir + File.separator + fileName;
                    // you'r own file IO Utility 
                    FileIOUtil.writeToFile(bodyPartEntity.getInputStream(), path);
                }
            }
        }
    } catch(Exception e) {
        e.printStackTrace();
    }
    // ... ... ... building response

幸運を

于 2018-09-17T01:02:56.210 に答える