ajax - 从 AbstractDefaultAjaxBehavior 中的请求中检索多部分数据
问题描述
我正在尝试创建一个组件以将 CKEditor 与 Apache Wicket 一起使用。我在 CKEditor 中添加了一个插件来将图像发送到服务器。为此,我使用了为客户端提供的示例:
对于服务器端,我创建了这个 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/阅读更多相关信息
推荐阅读
- angular11 - 如何支持 Angular 网站的多语言
- amazon-web-services - AWS Sagemaker Pytorch 无法正常运行
- html - 虚拟键盘覆盖 iOS 上 Safari 中的 html 元素
- google-cloud-platform - 如何启用谷歌云平台服务
- javascript - 如何在本地存储中保存反应表的展开/折叠状态?
- python - Pandas 比较不同 DataFrame 上的 2 列
- c++ - 如何在 macOS 中创建和使用共享库
- r - 带有索引列表的 R tibble:如何快速使用它们?
- reactjs - “Where”子句或从 nextjs 中的其他文件中提取基于 id 的数据库
- javascript - 如何删除 TimelineItem 上的左侧填充?