使用common-fileupload实现文件上传

首先,页面上的代码:

<div class="wgt-pop-importExcel" style="display: none" id="batch_add_user">
        <form id="input_form" enctype="multipart/form-data"
              action="<%=RD.get("orgUrl")%>do?action=org/base/member_manager&start=input_org_member&ck_OrgId=<%=org_id%>"
              method="post">
            <div class="tip-1">您想要下载模板,快速导入组织成员信息。若您已拥有组织成员
                信息文件,可直接导入。<a href="<%=RD.get("orgUrl")%>/aidTemplate/memberTmpl.xls">员工列表导入范本.xls</a>
            </div>
            <div class="upload">
                <div class="btn btn-5 btn-uploadfile">
                    <input type="file" id="user_Info" name="user_Info" accept=".xls"><span>上传</span>
                    <input type="text" style="display: none" name="dept_id" id="dept_id" value="">
                </div>
                <div class="curFile"></div>
            </div>

            <div class="tip-2">可导入Excel 03及以上版本,大小不超过1M的文件,单次最多导入100条
                记录,内容格式请参考员工列表导入范本.xls。初始密码为:123456
            </div>
        </form>
        <div class="form-btns">
            <button class="btn btn-3" id="batch_add_btn">确定</button>
        </div>
    </div>

和别的上传一样,只是修改:enctype="multipart/form-data"。

整个业务的关键在于,文件上传后需要解析成 HSSFWorkbook这个对象,有关于HSSFWorkbook这个的具体内容请百度。 直接上代码:

  //文件存放地址
  String saveDirectory = System.getProperty("java.io.tmpdir").replace("\\", "/");
        saveDirectory = saveDirectory.endsWith("/") ? saveDirectory : saveDirectory + "/";
        saveDirectory += "fileTemp/";
        //解析类的工厂
        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
        //文件大于临界值时存放的文件夹目录
        diskFileItemFactory.setRepository(new File(saveDirectory));
        //设置缓存临界值
        diskFileItemFactory.setSizeThreshold(2 * 1024 * 1024);
        //生产一个解析类
        ServletFileUpload upload = new ServletFileUpload(diskFileItemFactory);
        //解析类所能放置文件的大小(在前端其实就有限制)
        upload.setFileSizeMax(2 * 1024 * 1024);
        List<JSONObject> result = new ArrayList<JSONObject>();
        JSONObject reJson = null;
        try {
            //解析页面传入的所有数据,
            List fileItems = upload.parseRequest(request);
            Iterator iter = fileItems.iterator();//迭代
            JSONObject textJson = new JSONObject();
            //迭代表单中的每一项内容
            while (iter.hasNext()) {
                FileItem file = (FileItem) iter.next();
                //如果传入的数据是表单的数据,也就是表单中,非type=file类型的那些数据,input之类
                if (file.isFormField()) {
                    //获取到对应的一系列数据
                    textJson.put(file.getFieldName(), file.getString());
                } else {
                //处理自己的业务,要存储的存储,要解析的解析
                。。。。。。
                }
                }

OK,打完收工,其实很简单,

转载于:https://my.oschina.net/u/2357858/blog/685253

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值