万能表单解析工具在xheditor上传文件中的应用

利用JadePool中的万能表单解析工具cn.jadepool.web.ProcessForm可以轻松解析表单提交的全部信息,甚至可以轻松获取一个未知结构的表单由那些字段组成。以下是在xheditor上传图片文件中的应用。

1、解析表单:

                String allowFilter = "bmp|png|jpg|gif|swf|wma|mp3|avi|doc|psd|zip|jar|war|pdf|mpg|txt|sql";
                ProcessForm form = ProcessForm.instance();//cn.jadepool.web.ProcessForm
                form.setFilter(allowFilter);
                form.setAllowFileSize(allowSize);
                form.parse(request);
                Map _m = form.getRecordFullInfo();
                System.out.println(_m);// {filedata_filename=5830.jpg, filedata_ext=jpg, filedata_contenttype=image/pjpeg, filedata_size=154470, filedata_height=768, filedata_width=1366, filedata=[B@3eba9ff8, filedata_originfilename=5830.jpg}
                
 通过System.out.println(_m);语句轻松地将xheditor上传文件的表单结构呈现了出来,Map对象_m中的键名就是原表单中的字段名。

2、保存上传的文件

              
                String realPath = application.getRealPath("") + java.io.File.separator + "page" + java.io.File.separator + "upload";//
                String webPath = request.getContextPath() + "/page/upload";//  
                String filename = (String) _m.get("filedata_filename");
                //Integer fileSize = (Integer) _m.get("filedata_size");
                File f = new File(realPath);
                f.mkdirs();
                f = new File(realPath + java.io.File.separator + filename);
                byte[] filedata = (byte[]) _m.get("filedata");
                form.writeFile(filedata, f);

3、将上传的信息保存到数据库中

                
                //以下代码,将上传的文件信息保存到数据库picture表中
                //Jade j = new Jade();
                //_m.put("news_file", urlFile);
                //j.save("picture", _m);
                //j.commit();


附:在线编辑文件newsdoc.html和处理上传文件upload.jsp完整的源代码

1、newsdoc.html文件

<!DOCTYPE html>
<!--
万能表单解析工具cn.jadepool.web.ProcessForm在xheditor上传文件中的应用
胡开明
2015-03-27
xheditor在线编辑器,请到相关网站下载
-->
<html>
    <head>
        <title>万能表单解析工具cn.jadepool.web.ProcessForm在xheditor上传文件中的应用</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
        <!--请修改以下三个文件的路径-->
        <script type="text/javascript" src="../resources/xheditor/1.2.1/jquery/jquery-1.4.4.min.js"></script>
        <script type="text/javascript" src="../resources/xheditor/1.2.1/xheditor-1.2.1.min.js"></script>
        <script type="text/javascript" charset="utf-8" src="../resources/xheditor/1.2.1/xheditor_lang/zh-cn.js"></script>
        <script type="text/javascript">
            $(pageInit);
            function pageInit() {
                $('#elm1').xheditor({upLinkUrl: "upload.jsp", upLinkExt: "zip,rar,txt", upImgUrl: "upload.jsp", upImgExt: "jpg,jpeg,gif,png", onUpload: insertUpload});
            }
            function insertUpload(arrMsg) {
                //alert("上传成功!");
            }
        </script>
    </head>
    <body>
        <textarea id="elm1" name="elm1" style="width: 800px;height:300px;">请上传文件进行测试...</textarea>
    </body>
</html>

2、处理表单上传文件upload.jsp

<%-- 
    万能表单解析工具ProcessForm类的应用,在工程中下载并添加jadepool-1.XX.jar包
    Document   : upload.jsp
    Created on : 2015-3-26, 22:48:02
    Author     : 胡开明
    Description: 专为xhEditor编写的上传处理文件,为了兼容xheditor,本JSP文件编码采用utf-8,如果用GBK很可能导致上传接口失败。
--%>

<%@page contentType="text/html" pageEncoding="utf-8"%>
<%@page import="java.io.File,java.util.*,cn.jadepool.sql.*,cn.jadepool.web.*,cn.jadepool.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charsetutf-8">
        <title>JSP Page</title>
        <%

            String realPath = application.getRealPath("") + java.io.File.separator + "page" + java.io.File.separator + "upload";//
            String webPath = request.getContextPath() + "/page/upload";//
            boolean isTooBig = false;
            int allowSize = 20000000;//20m
            String returnMsg = "{err:'',msg:''}";//xhEditor规定的返回字符串JSON格式
            try {
                String allowFilter = "bmp|png|jpg|gif|swf|wma|mp3|avi|doc|psd|zip|jar|war|pdf|mpg|txt|sql";
                ProcessForm form = ProcessForm.instance();//cn.jadepool.web.ProcessForm
                form.setFilter(allowFilter);
                form.setAllowFileSize(allowSize);
                form.parse(request);
                Map _m = form.getRecordFullInfo();
                //System.out.println(_m);// {filedata_filename=5830.jpg, filedata_ext=jpg, filedata_contenttype=image/pjpeg, filedata_size=154470, filedata_height=768, filedata_width=1366, filedata=[B@3eba9ff8, filedata_originfilename=5830.jpg}
                String filename = (String) _m.get("filedata_filename");
                //Integer fileSize = (Integer) _m.get("filedata_size");
                File f = new File(realPath);
                f.mkdirs();
                f = new File(realPath + java.io.File.separator + filename);
                byte[] filedata = (byte[]) _m.get("filedata");
                form.writeFile(filedata, f);
                String urlFile = webPath + "/" + filename;
                returnMsg = "{err:'',msg:'" + urlFile + "'}";//xhEditor规定的返回字符串JSON格式

                //以下代码,将上传的文件信息保存到数据库picture表中
                //Jade j = new Jade();
                //_m.put("news_file", urlFile);
                //j.save("picture", _m);
                //j.commit();
                
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                out.println(returnMsg);
            }

        %>
    </head>
    <body>
    </body>
</html>

以下是上传图片的效果
技术分享




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。