zoukankan      html  css  js  c++  java
  • AJAX 上传图片到磁盘并通过restful保存图片路径到数据库 添加客户操作

    1.form表单,包括其他字段

    <form class="form-horizontal" enctype="multipart/form-data" >
                    <div class="card-body" >
                      <div class="form-group row">
                        <label for="inputEmail3" class="col-sm-2 col-form-label">客户名称</label>
                        <div class="col-sm-10">
                          <input type="text" class="form-control" name="name"  id="name" placeholder="请输入名称">
                        </div>
                      </div>
                      <div class="form-group row">
                        <label for="inputEmail3" class="col-sm-2 col-form-label">客户地址</label>
                        <div class="col-sm-10">
                          <input type="text" class="form-control" name="address"  id="address" placeholder="请输入地址">
                        </div>
                      </div>
                      <div class="form-group row">
                        <label for="inputEmail3" class="col-sm-2 col-form-label">手机</label>
                        <div class="col-sm-10">
                          <input type="text" class="form-control" name="phone"  id="phone" placeholder="请输入手机号">
                        </div>
                      </div>
                      <div class="form-group row">
                        <label for="inputEmail3" class="col-sm-2 col-form-label">QQ</label>
                        <div class="col-sm-10">
                          <input type="text" class="form-control" name="qq"  id="qq" placeholder="请输入qq">
                        </div>
                      </div>
                      <div class="form-group row">
                        <label for="inputEmail3" class="col-sm-2 col-form-label">客户等级</label>
                        <div class="col-sm-10">
                          <select name="level" id="level" class="form-control">
                            <option value="选择级别" label="选择级别">---</option>
                            <option value="普通客户">普通客户</option>
                            <option value="vip客户">vip客户</option>
                            <option value="超级vip客户">超级vip客户</option>
                            <option value="钻石vip客户">钻石vip客户</option>
                          </select>
                        </div>
                      </div>
                      <div class="form-group row">
                        <label for="inputEmail3" class="col-sm-2 col-form-label">收款账号</label>
                        <div class="col-sm-10">
                          <input type="text" class="form-control" name="accounts"  id="accounts" placeholder="请输入 收款账号">
                        </div>
                      </div>
    
                      <div class="form-group row">
                        <label for="inputEmail3" class="col-sm-2 col-form-label">收款码</label>
                        <div class="col-sm-10">
                          <input type="file" name="file" id="photoFile">//photoFile绑定函数内的代码获取二进制数据
                        </div>
                      </div>
    
                      <div class="form-group row">
                        <label for="inputEmail3" class="col-sm-2 col-form-label"></label>
                        <div class="col-sm-10">
                          <input type="button" id="submit" class="form-control" value="提交">
                        </div>
                      </div>
                    </div>
                    <!-- /.card-footer -->
                  </form>
    

    2.JS代码

      //ID为submit的按钮绑定单击事件执行保存函数
    $("#submit").click(function(){
        //alert(888);
    
        upload();//调用上传图片方法
    
        //创建客户对象
        $customer={"name": $("#name").val(),
          "address": $("#address").val(),
          "phone": $("#phone").val(),
          "qq": $("#qq").val(),
          "level": $("#level").val(),
          "accounts": $("#accounts").val()
        };
    
        //alert($("#name").val())
    
        //传递对象到后台保存的AJAX
        $.ajax({
          cache: false,
          crossDomain: true,
          url: "http://localhost:8080/customers",
          type: "POST",
          dataType:"json",
          contentType:"application/json",
          data:JSON.stringify($customer),
          success: function(data) {
            console.log(data);
    
            alert(data);
    
    
          },
          error: function (msg, url, line) {
            console.log(msg);
            alert(msg.responseText);//添加客户信息成功弹出消息
            //alert('msg = ' + msg + ', url = ' + url + ', line = ' + line);
    
          }
        })
    
      });
    
      /**
       * 上传图片
       */
      function upload() {
        if ($("#photoFile").val() == '') {
          return;
        }
        var formData = new FormData();
    
        //获取图片二进制流
        formData.append('photo', document.getElementById('photoFile').files[0]);
        $.ajax({
          url: "http://localhost:8080/customers/uploadPhoto",
          type: "post",
          data: formData,
          contentType: false,
          processData: false,
          success: function (data) {
            if (data.type == "success") {
    
            } else {
              alert(data.msg);
            }
          },
          error: function (data) {
            alert("上传失败")
          }
        });
      }
    

    .3.控制器代码

    	//图片路径URL
    	public String url;
    
    //保存图片代码,同时将图片路径赋值给变量url
    	@CrossOrigin
    	@RequestMapping(value = "/customers/uploadPhoto", method = RequestMethod.POST)
        @ResponseBody
        public Map<String, String> uploadPhoto(MultipartFile photo, HttpServletRequest request) {
            Map<String, String> ret = new HashMap<String, String>();
            if (photo == null) {
                ret.put("type", "error");
                ret.put("msg", "选择要上传的文件!");
                return ret;
            }
            if (photo.getSize() > 1024 * 1024 * 10) {
                ret.put("type", "error");
                ret.put("msg", "文件大小不能超过10M!");
                return ret;
            }
            //获取文件后缀
            String suffix = photo.getOriginalFilename().substring(photo.getOriginalFilename().lastIndexOf(".") + 1, photo.getOriginalFilename().length());
            if (!"jpg,jpeg,gif,png".toUpperCase().contains(suffix.toUpperCase())) {
                ret.put("type", "error");
                ret.put("msg", "请选择jpg,jpeg,gif,png格式的图片!");
                return ret;
            }
            //获取项目根目录加上图片目录 webapp/static/imgages/upload/
            String savePath = "C:\img\";
            
            System.out.println(savePath);
            
            File savePathFile = new File(savePath);
            if (!savePathFile.exists()) {
                //若不存在该目录,则创建目录
                savePathFile.mkdir();
            }
            String filename = new Date().getTime() + "." + suffix;
            try {
                //将文件保存指定目录
                photo.transferTo(new File(savePath + filename));
            } catch (Exception e) {
                ret.put("type", "error");
                ret.put("msg", "保存文件异常!");
                e.printStackTrace();
                return ret;
            }
            ret.put("type", "success");
            ret.put("msg", "上传图片成功!");
            ret.put("filepath","C:\img\");
            ret.put("filename", filename);
            System.out.println(filename);
            url=savePath+filename;
            return ret;
        }
    
    
    	//添加客户信息的代码
    	@CrossOrigin
    	@RequestMapping(value = "/customers", method = RequestMethod.POST, headers = "Accept=application/json")
    	public ResponseEntity<Object> addCustomer(@RequestBody Customer customer) {
    		customer.setUrl(url);
    		customerMapper.insert(customer);
    		url=null;
    		return new ResponseEntity<>("添加成功", HttpStatus.CREATED);
    	}
    

      

  • 相关阅读:
    【部分原创】标准C语言的优先级、结合性、求值顺序、未定义行为和非确定行为浅析
    &&、||、?:、,四个运算符的求值顺序
    [转]说说C语言运算符的“优先级”与“结合性”
    初识Nginx,简单配置实现负载均衡(ubuntu + Nginx + tomcat)
    Hadoop伪分布式模式安装
    HBase hbase-site.xml 参数
    HBase单机环境搭建
    Hadoop单机模式安装
    JAVA笔记整理(一),JAVA介绍
    JAVA笔记整理(十),JAVA中的File
  • 原文地址:https://www.cnblogs.com/max-hou/p/13536150.html
Copyright © 2011-2022 走看看