UE.Editor下载

mac2022-06-30  69

前台页面: 

  <script type="text/javascript" charset="utf-8" src="/script/ueditor/ueditor.config.js"></script>    <script type="text/javascript" charset="utf-8" src="/script/ueditor/ueditor.all.min.js"></script>

 <a id="btnDownloadWord" class="mini-button fake-no-status" οnclick="downloadWord()">下载Word</a>

  downloadWord: function(e) {                mini.get('btnDownloadWord').setEnabled(false);                var data = {content: encodeURIComponent(getUEEditor().getContent()), name: encodeURIComponent(getForm().getData().contractname)};                var inputs = '<input type="hidden" name="content" value="'+data.content+'"/>';                inputs += '<input type="hidden" name="name" value="'+data.name+'"/>';                         jQuery('<form method="post" action="/richeditor/exportWord.do">'+inputs+'</form>').appendTo('body').submit().remove();                 mini.get('btnDownloadWord').setEnabled(true);            }

 

后台处理:

public void exportWord() {        OutputStream os = null;        ByteArrayInputStream bais = null;        POIFSFileSystem poifs = null;        String method = request.getMethod();        try {            if (POST.equalsIgnoreCase(method)) {                String content = URLDecoder.decode(request.getParameter("content"), UTF8);                String name = URLDecoder.decode(request.getParameter("name"), UTF8);                byte[] buf = buildContent(content).getBytes();                bais = new ByteArrayInputStream(buf);                poifs = new POIFSFileSystem();                DirectoryEntry directory = poifs.getRoot();                directory.createDocument("WordDocument", bais);                response.reset();                response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(name + ".doc", UTF8));                response.setContentType("application/msword");                os = new BufferedOutputStream(response.getOutputStream());                poifs.writeFilesystem(os);                os.flush();            } else if (GET.equalsIgnoreCase(method)) {            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                if (null != bais) {                    bais.close();                }                if (null != os) {                    os.close();                }                if (null != poifs) {                    poifs.close();                }            } catch (IOException e) {                e.printStackTrace();            }        }    }

    private String buildContent(String content) throws Exception {        VelocityEngine ve = new VelocityEngine();        Properties p = new Properties();        p.put(Velocity.FILE_RESOURCE_LOADER_PATH,this.getClass().getClassLoader().getResource("conf/template").getPath()); //模板路径        ve.init(p);        Template template = ve.getTemplate("richeditor.vm", UTF8);  //获取模板        VelocityContext context = new VelocityContext();        context.put("content", content);        StringWriter writer = new StringWriter();        template.merge(context, writer);        return writer.toString();    }

 

注意:

this.getClass().getResource("/").getPath() 获取classes根路径

在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常。

如果要考虑跨平台,则最好是这么写:File myFile = new File("C:" + File.separator + "tmp" + File.separator, "test.txt");

 

转载于:https://www.cnblogs.com/xiaoQ0725/p/8316518.html

最新回复(0)