如何在Jersey中阅读上传的文件详细信息

时间:2016-01-27 12:00:59

标签: java jersey

我已经实现了REST服务,用于将多个文件上传到服务器中。但问题是,如果我在REST服务中使用FormDataMultiPart,我无法获取文件详细信息。我可以获取文件内容。获取如下的文件详细信息,它给了我一个错误说不支持。

    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public void upload(FormDataMultiPart formParams)
    {
        Map<String, List<FormDataBodyPart>> fieldsByName = formParams.getFields();

       //Assume i am sending only files with the request

        for (List<FormDataBodyPart> fields : fieldsByName.values())
        {
            for (FormDataBodyPart field : fields)
            {

                InputStream is = field.getEntityAs(InputStream.class);
                String fileName = field.getName();
                field.getMediaType();
               //Those work perfectly

    //This gave me an error
  FormDataContentDisposition f=field.getEntityAs(FormDataContentDisposition   .class);
    System.out.println(f.getFileName());

            }
        }
    }

如果使用type,name,size,请告诉我如何为每个上传的文件获取FormDataMultiPart等文件详细信息。

1 个答案:

答案 0 :(得分:7)

我最终能够访问文件详细信息,这里是代码片段。

@POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public void upload(FormDataMultiPart formParams)
    {
        Map<String, List<FormDataBodyPart>> fieldsByName = formParams.getFields();

       //Assume i am sending only files with the request

        for (List<FormDataBodyPart> fields : fieldsByName.values())
        {
            for (FormDataBodyPart field : fields)
            {

                InputStream is = field.getEntityAs(InputStream.class);
                String fileName = field.getName();
                field.getMediaType();


   //This working fine
  FormDataContentDisposition f=field.getFormDataContentDisposition();
  System.out.println(f.getFileName());

            }
        }
    }