- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我创建了一个 jersey restful web 服务,我使用 @Context HttpServletRequest 请求
作为方法签名设法上传多个文件工作得很好。
事情是,要获取其他表单字段,我需要重复检查 .isFormField();
方法和相对 .getName();
文件或 .getFieldName( );
和 .getString();
方法来检查必填字段是否存在每次调用 web 服务,我认为这很冗长如果还有其他几个字段,则过程昂贵。
更简单的方法是使用 @FormDataParam
,其中 web 服务过去常常使用客户端需要传递的参数公开,但问题是我无法上传多个文件一去。
因为如果媒体类型或编码类型为 multipart/form-data
,也无法使用 request.getParameter("field1");
获取其他表单字段。
每当我尝试将 @FormDataParam
和 @Context HttpServletRequest 请求
组合在一起时,它会抛出异常:org.apache.tomcat.util.http.fileupload.FileUploadException:流关闭
在使用 .parseRequest(request);
ServletFileUpload
类的方法解析 request 时。
请提出一些好的方法如何通过获取所需的表单字段来实现多个文件上传,就像在 Jersey 中的 @FormDataParam
一样简单。
多文件上传方法:
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("/multipleFiles")
public String restDemo(@Context HttpServletRequest request)
{
//...code goes here
}
我的表单:
输出:(解析请求后)
field1 > abc
field2 > xyz
Chrysanthemum.jpg Size: 879394
Desert.jpg Size: 845941
Hydrangeas.jpg Size: 595284
Jellyfish.jpg Size: 775702
最佳答案
如果字段有相同的名称,像这样:
<form name="formtest" action="rest/multipleFiles" method="POST" enctype="multipart/form-data">
<input type="text" name="atext" value="abc" />
<input type="text" name="btext" value="123" />
<input type="file" name="zfile" value="" />
<input type="file" name="zfile" value="" />
<input type="submit" value="submit" />
</form>
您可以使用:
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("/multipleFiles")
public String restDemo(@FormDataParam("zfile") List<FormDataBodyPart> zfile)
现在,我建议不要使用 HttpServletRequest。如果您需要处理所有内容,请使用:
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("/multipleFiles")
public String restDemo(FormDataMultiPart formParams) {
formParams.getFields();
}
关于java - 在 Jersey 中使用@Context HttpServletRequest 和@FormDataParam 进行多文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17174485/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!