java中带有apache fileUpload parseRequest的自定义ckeditor fileUpload返回空列表
我有一个seam 2.2.2应用程序,我正在尝试为它定制ckeditor文件上传插件 我提出的解决方案是: 1) 初始化具有“编辑器”样式类的所有元素的编辑器:java中带有apache fileUpload parseRequest的自定义ckeditor fileUpload返回空列表,java,file-upload,ckeditor,seam,apache-commons,Java,File Upload,Ckeditor,Seam,Apache Commons,我有一个seam 2.2.2应用程序,我正在尝试为它定制ckeditor文件上传插件 我提出的解决方案是: 1) 初始化具有“编辑器”样式类的所有元素的编辑器: var elements = CKEDITOR.document.find('.editor'); for(var i = 0; i< elements["$"].length; i++){ CKEDITOR.replace(elements["$"][i], { filebrowserUp
var elements = CKEDITOR.document.find('.editor');
for(var i = 0; i< elements["$"].length; i++){
CKEDITOR.replace(elements["$"][i], {
filebrowserUploadUrl: rootPath + "/cops/filebrowserUploadUrl.seam"
});
}
3) 使用apache commons fileUpload实现后端:
public void sendImageToServer()
{
HttpServletRequest request = ServletContexts.instance().getRequest();
DiskFileItemFactory factory = new DiskFileItemFactory();
File repository = (File) request.getAttribute("javax.servlet.context.tempdir");
factory.setRepository(repository);
ServletFileUpload upload = new ServletFileUpload(factory);
try
{
List<FileItem> items = upload.parseRequest(request);
processItems(items); //set the file data to specific att
saveOpenAttachment(); //save the file to disk
}
public void sendImageToServer()
{
HttpServletRequest=ServletContexts.instance().getRequest();
DiskFileItemFactory=新的DiskFileItemFactory();
filerepository=(File)request.getAttribute(“javax.servlet.context.tempdir”);
setRepository(repository);
ServletFileUpload upload=新的ServletFileUpload(工厂);
尝试
{
列表项=upload.parseRequest(请求);
processItems(items);//将文件数据设置为特定att
saveOpenAttachment();//将文件保存到磁盘
}
此方法调用正确。我可以在请求中删除上载参数(带有一些二进制数据),但上载。parseRequest(请求)返回一个空列表。我已经搜索了此问题,并尽了我所能,但我无法判断应用程序自定义FaceletViewHandler是否导致此问题。
虽然如果我能找到这个问题的解决方案,我会非常满意,但我觉得这不是一个好的解决方案。也许Seam与facelets的集成可以给我一个更好的解决方案。我真的不知道。
有什么建议吗?最终解决方案类似于Seam多部分过滤器句柄请求:
ServletRequest request = (ServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
try
{
if (!(request instanceof MultipartRequest))
{
request = unwrapMultipartRequest(request);
}
if (request instanceof MultipartRequest)
{
MultipartRequest multipartRequest = (MultipartRequest) request;
String clientId = "upload";
setFileData(multipartRequest.getFileBytes(clientId));
setFileContentType(multipartRequest.getFileContentType(clientId));
setFileName(multipartRequest.getFileName(clientId));
saveOpenAttachment();
}
}
现在,我像Seam一样处理请求,不需要破坏其他类型请求的web:multipart filter配置。我通过执行List items=new ServletFileUpload(new DiskFileItemFactory())得到建议。parseRequest(请求)在mycomponents.xml的bean和设置中。但仍然有一个疑问:任何其他url模式都会导致崩溃。有人知道为什么吗?
ServletRequest request = (ServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
try
{
if (!(request instanceof MultipartRequest))
{
request = unwrapMultipartRequest(request);
}
if (request instanceof MultipartRequest)
{
MultipartRequest multipartRequest = (MultipartRequest) request;
String clientId = "upload";
setFileData(multipartRequest.getFileBytes(clientId));
setFileContentType(multipartRequest.getFileContentType(clientId));
setFileName(multipartRequest.getFileName(clientId));
saveOpenAttachment();
}
}