注意針對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();