访问 Wicket Ajax 行为中的多部分表单数据



我目前正在使用 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");

最新更新