多图文件上传

多图文件上传

采用前台js配合springMVC的方式上传图文,可多次上传,先预览,后统一提交图片,视频到后台处理。

1,表单html部分准备

<li class="img-3 addimg" onclick="addpic()" ><img src="images/sz.png" alt="" /></li>//指定一个添加图片的入口
<li class="img-3"  style="display: none" id="pic0">
    //这里用于预览上传的图片1
</li>
<li class="img-3"  style="display: none" id="pic1">
    //这里用于预览上传的图片2
</li>
...
<input type="file" name="file" id="file" multiple="multiple" onchange="upload();" style="display: none"/>
//这里是准备提交到服务器保存的隐藏域。可以指定accept="image/*"属性用于上传图片类型。

2,编写js代码

var num=0;//定义用于预览的div编号
var fordate=new FormData();//用于上传的表单数据对象。
//添加图片回显,点击触发选择文件。
function addpic() {
  $("#file").click();
}
//input框改变事件,触发上传图片预览
function upload() {
  var file = $("#file")[0];//文件对象转js对象
  for(var i=0;i<file.files.length&&num<9;i++){
    console.log(file.files[i].name);
    $("#pic"+(num+i)).show();//显示对应的预览区域
    if(file.files[i].name.indexOf(".mp4")>0){//判断文件属性,根据文件属性向div中插入video或img
      var div = "<video src=\"\" id='src"+(num+i)+"' style='width: 100%' controls alt=\"\"/>"+
          "<input type=\"hidden\" src=\"\" name=\"img\" alt=\"\" id=\"img0\"/>";
      $("#pic"+(num+i)).append(div);//写入到对应的div中。
      var img = document.getElementById("src"+(num+i));//获取预览对象的js对象。
      console.log($(img).attr("id"))
      if (file.files && file.files[i]){
        var fils=file.files[i];
        var srcc=window.URL.createObjectURL(fils);
        $(img).attr({'src':srcc,'width':500+'px','heigth':500+'px'});//初始化预览对象显示
        fordate.append('pic',fils);//将文件对象添加到fordate中。这里的文件名需要与后台接收多媒体数组对象的名称一致。
      }
    }else{
      var div = "<img src=\"\" id='src"+(num+i)+"'  alt=\"\"/>"+
          "<input type=\"hidden\" src=\"\" name=\"img\" alt=\"\" id=\"img0\"/>";
      $("#pic"+(num+i)).append(div);
      var img = document.getElementById("src"+(num+i));
      console.log($(img).attr("id"))
      if (file.files && file.files[i]){
        var fils=file.files[i];
        var srcc=window.URL.createObjectURL(fils);
        $(img).attr({'src':srcc,'width':500+'px','heigth':500+'px'});
        fordate.append('pic',fils);
      }
    }
  }
 num+=i;

3,表单提交事件

//表单提交按钮,提交表单
function submit() {
  //可以向fordate中继续添加其它的属性值。
  var title = $("#title").val();
  var addre = $("#addre").val();
  fordate.append("title",title);
  fordate.append("addre",addre);

  $.ajax({  //发送ajax请求
      url: "release",//提交地址
      type: "post",
      data: fordate,
      processData : false,
      contentType : false,
      success: function(json){
        console.log("发表成功"+json.result);
        window.location.href="index.html";
      }
  });
}

4,后台接收参数

@RequestMapping(value="/page/release",
                method=RequestMethod.POST,produces="application/json;charset=UTF-8")
@ResponseBody
public Map release(HttpServletRequest request,HttpSession session,
                   @RequestParam(value = "pic",required = true) MultipartFile[] pic,
                   String title,String addre) throws Exception{
  ...
  Map map = new HashMap();
  map.put("result",01);
  return map;
}
//注意提交方式是post,produces需要指定application/json。返回json需要注解ResponseBody。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值