现在的位置: 首页 > 综合 > 正文

在含有Struts2框架的应用中添加KindEditor上传图片功能

2018年03月30日 ⁄ 综合 ⁄ 共 1390字 ⁄ 字号 评论关闭

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 。

抱歉!评论已关闭.