从 AbstractDefaultAjaxBehavior 中的请求中检索多部分数据
Retrieve the multipart data from the request inside a AbstractDefaultAjaxBehavior
我正在尝试创建一个组件以将 CKEditor 与 Apache Wicket 结合使用。我在 CKEditor 中添加了一个插件来将图像发送到服务器。为此,我使用了客户端给出的示例:
CKEditor: Custom image upload adapter
对于服务器端,我创建了这个 Java 代码:
add(new AbstractDefaultAjaxBehavior() {
@Override
protected void updateAjaxAttributes(final AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
attributes.setMethod(Method.POST);
attributes.setMultipart(true);
attributes.setDataType("json");
}
@Override
protected void respond(final AjaxRequestTarget target) {
// Avoid the redirect (302)
final RequestCycle requestCycle = getRequestCycle();
requestCycle.scheduleRequestHandlerAfterCurrent(null);
// Return the picture URL
final WebResponse response = (WebResponse) RequestCycle.get().getResponse();
response.setStatus(200);
response.setContentType("application/json");
response.write("{ \"url\": \"http://localhost:8080/image/foobar.jpg\"}");
}
@Override
public void renderHead(final Component component, final IHeaderResponse response) {
super.renderHead(component, response);
final String callbackUrl = getCallbackUrl().toString();
response.render(JavaScriptHeaderItem.forScript("ckeditorCallbackUrl = '" + callbackUrl + "';",
"ckeditorCallbackUrl"));
}
});
但是在响应方法中,我不知道如何访问带有图像的多部分数据。
如何检索此表单数据?
谢谢。
您可以通过以下方式阅读文件:
ServletWebRequest webRequest = (ServletWebRequest) RequestCycle.get().getRequest();
MultipartServletWebRequest multiPartRequest = webRequest.newMultipartWebRequest(getMaxSize(), "ignored");
multiPartRequest.parseFileParts();
Map<String, List<FileItem>> files = multiPartRequest.getFiles();
您可以在 http://wicketinaction.com/2012/11/uploading-files-to-wicket-iresource/
阅读更多相关信息
我正在尝试创建一个组件以将 CKEditor 与 Apache Wicket 结合使用。我在 CKEditor 中添加了一个插件来将图像发送到服务器。为此,我使用了客户端给出的示例:
CKEditor: Custom image upload adapter
对于服务器端,我创建了这个 Java 代码:
add(new AbstractDefaultAjaxBehavior() {
@Override
protected void updateAjaxAttributes(final AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
attributes.setMethod(Method.POST);
attributes.setMultipart(true);
attributes.setDataType("json");
}
@Override
protected void respond(final AjaxRequestTarget target) {
// Avoid the redirect (302)
final RequestCycle requestCycle = getRequestCycle();
requestCycle.scheduleRequestHandlerAfterCurrent(null);
// Return the picture URL
final WebResponse response = (WebResponse) RequestCycle.get().getResponse();
response.setStatus(200);
response.setContentType("application/json");
response.write("{ \"url\": \"http://localhost:8080/image/foobar.jpg\"}");
}
@Override
public void renderHead(final Component component, final IHeaderResponse response) {
super.renderHead(component, response);
final String callbackUrl = getCallbackUrl().toString();
response.render(JavaScriptHeaderItem.forScript("ckeditorCallbackUrl = '" + callbackUrl + "';",
"ckeditorCallbackUrl"));
}
});
但是在响应方法中,我不知道如何访问带有图像的多部分数据。
如何检索此表单数据?
谢谢。
您可以通过以下方式阅读文件:
ServletWebRequest webRequest = (ServletWebRequest) RequestCycle.get().getRequest();
MultipartServletWebRequest multiPartRequest = webRequest.newMultipartWebRequest(getMaxSize(), "ignored");
multiPartRequest.parseFileParts();
Map<String, List<FileItem>> files = multiPartRequest.getFiles();
您可以在 http://wicketinaction.com/2012/11/uploading-files-to-wicket-iresource/
阅读更多相关信息