KindEditor是一个轻便的图文编辑器,有一批人在维护和更新,还有很多热心人在源源不断的提出问题和建议,值得一试。
这个东西使用起来非常的方便,KindEditor在源码的/jsp/目录下已经有写好的upload功能,稍作修改即可适应Struts2使用。
upload code:
MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) this.getRequest(); String fileName = wrapper.getFileNames("imgFile")[0]; File file = wrapper.getFiles("imgFile")[0]; saveUrl += newFileName; FileOutputStream fos = new FileOutputStream(savePath + newFileName); byte[] buffer = new byte[1024]; InputStream in = new FileInputStream(file); try { int num = 0; while ((num = in.read(buffer)) > 0) { fos.write(buffer, 0, num); } } catch (Exception e) { e.printStackTrace(System.err); } finally { try{ if(in != null) in.close(); if(fos != null) fos.close(); }catch(IOException e){} } JSONObject obj = new JSONObject(); obj.put("error", 0); obj.put("url", saveUrl); this.print(obj.toJSONString());
被替换的代码:
FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("UTF-8"); List items = upload.parseRequest(request); Iterator itr = items.iterator(); while (itr.hasNext()) { ...... }
还有就是KindEditor的FileManager功能,如果你要转移原jsp中的代码至Struts action时,需要注意KindEditor会传递一些Action中并不存在的一些键值,Struts会有对应的warn和exception;
由于FileManager只是对upload成功的文件做一些查询和预览的功能,建议是用servlet替代Struts Action 。