注意针对SpringMvc模式
1、修改ckeditor 的配置文件 config.js
config.filebrowserUploadUrl = "fileUpload.html?type=Files&filePath=ckeditor";//上传文件的保存路径
config.filebrowserImageUploadUrl = 'fileUpload.html?type=Images&filePath=ckeditor';//上传图片的保存路径
config.filebrowserFlashUploadUrl = 'fileUpload.html?type=Flash&filePath=ckeditor';//上传flash的保存路径
2、编写文件上传接受控制器
/**
* CKEDITOR 插件文件上传
* @param request
* @param response
* @return
*/
@RequestMapping(value = "fileUpload.html")
@ResponseBody
public String processImageUpload(HttpServletRequest request,HttpServletResponse response) {
String callback = request.getParameter("CKEditorFuncNum");
Site site = this.getCurrentSite();
String urlPrefix = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort();
request.getRequestURI();
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
commonsMultipartResolver.setDefaultEncoding("utf-8");
Map mapPath=new HashMap();
try {
response.setContentType("text/html; charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
site = siteService.getSite(site.getSiteId());
if (commonsMultipartResolver.isMultipart(request)) {
MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);
Iterator<String> iter = multipartRequest.getFileNames();
while (iter.hasNext()) {
MultipartFile file = multipartRequest.getFile((String) iter.next());
System.out.println(file.getName());
//文件上传机制包含重名
mapPath = this.disposeFilePath(file,site,null,true,false,false);
}
if(StringUtils.isEmpty(mapPath.get("imageurl").toString())){
String imgPath = urlPrefix + mapPath.get("imageurl");
out.println("<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction(" + callback+ ",'" + imgPath + "','图片上传失败'" + ")"+"</script>");
}else{
String imgPath = urlPrefix + mapPath.get("imageurl");
out.println("<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction(" + callback+ ",'" + imgPath + "',''" + ")"+"</script>");
}
out.flush();
out.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
某些环境下在获取 iter文件出现空
Iterator<String> iter = multipartRequest.getFileNames();
可以试试
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Iterator<String> iter = multipartRequest.getFileNames();