RESTlet:如何处理多部分/表单数据请求?
当它是多部分/表单数据请求时,如何捕获传入的 @Post 变量?
对于常规的 Post 请求,我会这样做:
@Post
public void postExample(Representation entity) throws Exception{
Form form = new Form(entity);
System.out.println(form.getFirstValue("something"));
}
但是因为它是一个 multipart/form-data 请求,所以上面的输出 null
我是 Java 新手,所以要温柔:)
PS:我不感兴趣处理传入的文件,仅处理文本字段。
How do you catch incoming @Post variables when it is a multipart/form-data request?
For a regular Post request I would do:
@Post
public void postExample(Representation entity) throws Exception{
Form form = new Form(entity);
System.out.println(form.getFirstValue("something"));
}
But because it is a multipart/form-data request the above outputs null
I'm a Java newbie so be gentle :)
PS: I'm not interested in processing the incoming files, just the text fields.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是我的方法之一(Restlet 2.0)的粘贴。 这里我有一个包含一个文件上传和其他字段的表单,因此它相当完整:
我最终会将其重构为更通用的内容,但这就是我现在所拥有的。
This is a paste from one of my methods (Restlet 2.0). Here I have a form that includes one file upload plus other fields, therefore it is rather complete:
I'll end up refactoring it to something more generic, but this is what I have by now.
将其打包在 Restlet Resource 类中的一行中:
Iterator it = new RestletFileUpload(new DiskFileItemFactory()).parseRequest(getRequest()).iterator();
然后,在您的项目循环中,您可以使用 isFormField() 方法测试它们是否是 fileItems。
测试 fileItem 是否是 formField...有意义吗? ;)
但它有效。
祝你好运。
to pack it on one line, in you Restlet Resource class :
Iterator it = new RestletFileUpload(new DiskFileItemFactory()).parseRequest(getRequest()).iterator();
Then in your loop through your items, you can test whether they are or not fileItems with the method: isFormField().
Testing if a fileItem is a formField... makes sens ? ;)
but it works.
Good luck.
回答我自己的问题,这在 1.2 版本中目前不可行
To answer my own question, this is not currently feasible in version 1.2