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 。