zoukankan      html  css  js  c++  java
  • FormData+Ajax 实现多文件上传 学习使用FormData对象

    FormData对象是为序列化表以及创建与表单格式相同的数据(当然是用于XHR传输)提供便利。

    今天我们使用dropzone和FormData实现多文件上传功能。

    var SAMP = null;        //Dropzone对象
     
          SAMP = new Dropzone("#dropzone",
        {
                  url: "#",  //后台响应的链接
                  maxFiles: 4,    //最大可以传输的文件数量  目前我们设定为1
                  maxFilesize: 2048, //文件大小的限制
                  acceptedFiles: ".png,.jpg,.gif,.jpeg,.bmp", // 文件格式的限制
                  autoProcessQueue:false,  //文件是否自动传回到后台
                  myAwesomeDropzone:false,
        })
    

      我们设置文件不自动上传,而通过控件按钮实现上传功能。首先我们创建一个Dropzone对象,设置上传的最大文件数量,文件大小等。

    var myFormData = new FormData()
    

      创建Form Data对象

    SAMP.on("addedfile", function(file) {
       myFormData.append(file.name, file)
    })
    

      给Dropzone对象注册addedfile事件,当上传文件时,FormData对象的append()函数是以键值对的方式向myFormData成对成对的增添图片对象。

    $.ajax({      
              type:'POST',
          url:"#",
        data:myFormData,
              processData: false,//*必须写
              contentType: false,//*必须写
              success:function(data){
                           ...
            },
              error:function(){
                           ...
            }
    });    
    

      


      在使用FormData对象通过Ajax向后台传数据时,必须在选项中设置"processData: false,contentType: false,"两项,否则会报错。

      processData设置为false。因为data值是FormData对象,不需要对数据做处理。

      contentType设置为false。因为是由<form>表单构造的FormData对象,且已经声明了属性enctype="multipart/form-data",所以这里设置为
    false。

  • 相关阅读:
    netty(七)buffer源码学习2
    netty(六) buffer 源码分析
    netty(五) channel
    netty(三)---NioEventLoop分析
    netty(二)---客户端连接
    netty(一)---服务端源码阅读
    java NIO
    零拷贝
    计算机操作系统(复习)--- 虚拟内存
    疫情环境下的网络学习笔记 python 3.16
  • 原文地址:https://www.cnblogs.com/xiabaoying/p/6518912.html
Copyright © 2011-2022 走看看