我已经通过跟随示例找到了解决方案
FormDataMultipart。原来我离答案很近。
的
FormDataBodyPart类提供一种方法,其允许其用户读取的值作为
InputStream(或理论上,任何其他类,针对其消息体读取器存在的话)。
这是最终的解决方案:
形成表格保持不变。我有几个同名的字段,可以在其中放置文件。既可以使用
multiple表单输入(从目录上传许多文件时也要使用这些表单输入),也可以使用共享名称的众多输入(灵活的方式,从不同位置上传未指定数量的文件)。也可以使用Javascript向表单添加更多输入。
服务-使用<form action="/files" method="post" enctype="multipart/form-data"> <fieldset> <legend>Multiple inputs with the same name</legend> <input type="file" name="test" multiple="multiple"/> <input type="file" name="test" /> <input type="file" name="test" /> </fieldset> <input type="submit" value="Upload It" /></form>
FormDataMultipart
这是一种简化的方法,可从多部分表单中读取文件集合。所有具有相同输入的输入都分配给a,
List并
InputStream使用的
getValueAs方法将其值转换为
FormDataBodyPart。将这些文件作为
InputStream实例后,几乎可以对它们进行任何 *** 作。
@POST@Path("files")@Consumes(MediaType.MULTIPART_FORM_DATA)public Response uploadMultipart(FormDataMultiPart multiPart) throws IOException{ List<FormDataBodyPart> fields = multiPart.getFields("test"); for(FormDataBodyPart field : fields){ handleInputStream(field.getValueAs(InputStream.class)); } //prepare the response}private void handleInputStream(InputStream is){ //read the stream any way you want}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)