如何从Jersey的多部分表单中读取多个具有相同名称的(文件)输入?

如何从Jersey的多部分表单中读取多个具有相同名称的(文件)输入?,第1张

如何从Jersey的多部分表单中读取多个具有相同名称的(文件输入

我已经通过跟随示例找到了解决方案

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}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5565344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存