(spring MVC + MyBatis )上传文件或者图片+执行回滚操作(新手日记)

模态框(html)

<div class="modal fade" id="myModalLabel" tabindex="-1" role="dialog"
            aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal">
                            <span aria-hidden="true">&times;</span><span class="sr-only">Close</span>
                        </button>
                        <h5 class="modal-title">新增安全信息</h5>
                    </div>
                    <div class="modal-body">
                        <div class="ibox-content">
                            <form id="importForm" method="post"  class="form-horizontal m-t">
                                    <div class="form-group" >
                                           <label class="col-sm-3 control-label">类别</label>
                                        <div class="col-sm-8">
                                               <input type="text" class="form-control" aria-required="true" disabled="disabled" value="安全" id="base_type">
                                        </div>
                                     </div>
                                       <div class="form-group">
                                        <label class="col-sm-3 control-label">标题</label>
                                        <div class="col-sm-8">
                                            <input id="base_title" name="base_title" type="text" class="form-control" aria-required="true">
                                        </div>
                                      </div>
                                      <div class="form-group">
                                        <label class="col-sm-3 control-label">描述</label>
                                        <div class="col-sm-8">
                                            <input id="base_desc" name="base_desc" type="text" class="form-control" aria-required="true">
                                        </div>
                                      </div>
                                     <div class="form-group">
                                        <label class="col-sm-3 control-label">上传文件</label>
                                        <div class="col-sm-8">
                                            <input type="file" id="picture_path" name = "picture_path"  multiple>
                                        </div>
                                    </div>
                                <div class="hr-line-dashed"></div>
                                <div class="form-group draggable">
                                    <div class="col-sm-12 col-sm-offset-3">
                                        <button class="btn btn-primary" type="button" οnclick="save()">提交</button>
                                        <button class="btn btn-default" data-dismiss="modal" type="button">取消</button>
                                    </div>
                                </div>
                            </form>
                            <div class="clearfix"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

js传送数据到后台

/* 上传  */
        //上传文件并更新数据
        function save(){
            var base_title = $("#base_title").val();
            var base_desc = $("#base_desc").val();
            var base_type = $("#base_type").val();
            var fileObj = $("#picture_path")[0].files;
            if (base_title == 0 || base_desc == 0 || $("input[type='file']").val() == "") {
                alert("上传信息均不能为空");
                return;
            }else{
                var fileController = "../../../dab/FileUpload.cyl";
                var form = new FormData();
                form.append("base_type",base_type);
                form.append("base_title",base_title);
                form.append("base_desc",base_desc);
                for(var i = 0; i < fileObj.length; i++){
                    form.append("files", fileObj[i]);
                }
                var xhr = new XMLHttpRequest();
                xhr.open("post", fileController, true);
                xhr.onload = function(data){
                    var info = JSON.parse(xhr.response);
                    if (info.pathInfo) {
                        alert("成功");
                        $('#myModalLabel').modal('hide');
                    }else{
                        alert("上传失败,请检查文件格式是否符合要求!");
                    }
                };
                xhr.send(form);
            }
        }

控制层

@ResponseBody
    @RequestMapping(value = "/FileUpload.cyl", method = RequestMethod.POST)
    public Map<String, Object> putModelPlanFileUpload(HttpSession session, String base_title, String base_desc,
            String base_type, MultipartFile[] files) {
        Sys_user user = (Sys_user) session.getAttribute("Sys_user");
        Map<String, Object> result = new HashMap<String, Object>();
        try {
            result.put("pathInfo", dabSecurityService.addFileUpload(user,base_title,base_desc,base_type,files));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return result;
    }

服务层

@Override
    @Transactional(rollbackFor = Exception.class)//回滚所需要的
    public Map<String, Object> addFileUpload(Sys_user user, String base_title, String base_desc, String base_type,
            MultipartFile[] files) throws Exception {
        // TODO Auto-generated method stub
        Map<String, Object> result = new HashMap<String, Object>();
        List<String> lresult = new ArrayList<String>();
        Dab dab = new Dab();
        dab.setUploadperson(user.getId());
        dab.setBasedesc(base_desc);
        dab.setBasetitle(base_title);
        dab.setBasetype(base_type);
        dabSecurityDao.addDabInfo(dab);//同步信息
        if (dab.getId() != 0) {
            for (MultipartFile file : files) {
                // 获取文件后缀名
                String originalFileName = file.getOriginalFilename();
                String fileSuffix = originalFileName.substring(originalFileName.lastIndexOf(".") + 1).toLowerCase();
                if ("png".equals(fileSuffix) || "jpg".equals(fileSuffix) || "jpeg".equals(fileSuffix)
                        || "bmp".equals(fileSuffix) || "xls".equals(fileSuffix) || "xlsx".equals(fileSuffix)
                        || "doc".equals(fileSuffix) || "docx".equals(fileSuffix) || "pdf".equals(fileSuffix)
                        || "txt".equals(fileSuffix)) {// 检查后缀名
                    File uploadDir = new File("upload");
                    if (!uploadDir.isDirectory()) {// 检查目录
                        if (!uploadDir.mkdir()) {
                            result.put("message", "创建目录失败!");
                        }
                    }
                    StringBuilder newName = new StringBuilder();
                    newName.append(UUID.randomUUID().toString().replaceAll("-", ""));
                    newName.append(".");
                    newName.append(fileSuffix);
                    File saveFile = new File(ReadProperties.ReadProprety("upload.path"), newName.toString());
                    file.transferTo(saveFile);
                    String bas_readress = saveFile.getPath();// getPath 相对路径
                    System.out.println("上传路径:" + bas_readress);
                    DabBase dabBase = new DabBase();
                    dabBase.setBase_type(base_type);
                    dabBase.setBase_title(base_title);
                    dabBase.setBase_desc(base_desc);
                    dabBase.setBas_readress(bas_readress);
                    dabBase.setCreate_userid(user.getId());
                    dabBase.setPid(dab.getId());
                    dabSecurityDao.addFileUpload(dabBase);//上次图片信息
                    lresult.add(lresult.size(), file.getName());
                } else {
                    throw new Exception("上传文件格式错误");//回滚所需要的,返回错误
                }
            }
        }
        result.put("savaInfo", lresult);
        return result;
    }

服务层接口

public Map<String, Object> addFileUpload (Sys_user user, String base_title, String base_desc, String base_type, MultipartFile[] files) throws Exception;

Dao层

public Map<String, Object> putModelPlanFileUpload(HttpSession session, String base_title, String base_desc,
            String base_type, MultipartFile[] files) throws Exception;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值