我目前正在使用 Wicket 和一个 jQuery 插件来裁剪图片("裁剪图片"),它需要向 ajax 请求我的后端来裁剪图片。数据以多部分格式发送。
我的 Wicket 后端是使用"onRequest"方法的 Ajax 行为,我不知道如何检索多部分数据。
@Override
public void onRequest() {
String json = "{}";
boolean hasError = false;
RequestCycle cycle = getComponent().getRequestCycle();
IRequestParameters parameters = cycle.getRequest().getPostParameters();
此代码只能访问经典的 POST 变量,但不能用于多部分表单数据(值为空)。
你知道怎么做吗?
PS:这个线程很有帮助,但对我来说无法理解:Wicket 6 - 以多部分形式捕获 HttpServletRequest 参数?
车身有效载荷:
------WebKitFormBoundarykpVsQAYFGJywlAZd
Content-Disposition: form-data; name="imgUrl"
https://scontent.xx.fbcdn.net/hprofile-xpf1/t31.0- 1/c0.0.1536.1536/13055008_225242101175595_5770204993752392511_o.jpg
------WebKitFormBoundarykpVsQAYFGJywlAZd
Content-Disposition: form-data; name="imgInitW"
1536
------WebKitFormBoundarykpVsQAYFGJywlAZd
Content-Disposition: form-data; name="imgInitH"
1536
------WebKitFormBoundarykpVsQAYFGJywlAZd
Content-Disposition: form-data; name="imgW"
500
------WebKitFormBoundarykpVsQAYFGJywlAZd
Content-Disposition: form-data; name="imgH"
500
------WebKitFormBoundarykpVsQAYFGJywlAZd
Content-Disposition: form-data; name="imgY1"
等。。。
尝试:
WebRequest webRequest = (WebRequest) cycle.getRequest();
MultipartServletWebRequest multiPartRequest = webRequest.newMultipartWebRequest(getMaxSize(), "ignored");
multiPartRequest.parseFileParts();
IRequestParameters params = multiPartRequest.getRequestParameters();
这是我
的最终代码...非常丑陋,但它工作正常。
@Override
public void onRequest() {
boolean hasError = false;
IRequestParameters parameters = null;
RequestCycle cycle = RequestCycle.get();
ServletWebRequest webRequest = (ServletWebRequest) cycle.getRequest();
try {
MultipartServletWebRequest multiPartRequest = webRequest.newMultipartWebRequest(Bytes.kilobytes(10), "ignored");
multiPartRequest.parseFileParts();
parameters = multiPartRequest.getRequestParameters();
} catch (FileUploadException e) {
hasError = true;
}
之后,您可以轻松致电:
parameters.getParameterValue("you_param");