我有一个动态编号为<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);
}
答案 0 :(得分: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();
}
答案 1 :(得分:1)
这可能就是你要找的东西:
@POST
@Consumes("application/x-www-form-urlencoded")
public void post(MultivaluedMap<String, String> formParams) {
}
一旦你拥有了Map
,那么你几乎可以做任何事情。您可以连结file + i
并检查地图是否包含该密钥,如果是,则将值增加到地图中没有此类密钥的i
。
答案 2 :(得分: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
祝你好运