• H5实现formdata+ajax+上传进度上传文件


    技术点:1)H5 formData(),2)XMLHttpRequest()

    利用 FormData 对象,我们可以通过 js 用一些键值对来模拟一系列表单控件,我们还可以使用 XMLHttpRequest 的 send() 方法来异步的提交表单。与普通的 Ajax 相比,使用 FormData 的最大优点就是我们可以异步上传二进制文件。

    案例:

    $inputObj.change(function(){
        var file = $(this)[0].files[0];
        makeDoThisFile(file);
    });
    
    function makeDoThisFile(file){
        var size = file.size,
            type = file.type,
            name = file.name;
    
        //创建FormData对象
        var formDataA = new FormData();
        //添加文件
        formDataA.append('file',file);
        //添加提交按钮
        formDataA.append("submit", "submit");
       //创建ajax对象
        var xhr = new XMLHttpRequest(); 
        xhr.open('POST','php/uploadFile.php',true); // 异步传输
        //文件上传进度
        xhr.upload.onprogress = function (ev) {//
            var percent = 0; 
             if(ev.lengthComputable) { 
                  percent = 100 * ev.loaded/ev.total; 
                  console.log('已经上传'+percent);
             } 
         }
    
         //发送请求
         xhr.send(formDataA);
         //执行回调函数
         xhr.onreadystatechange = callBlack;
    
         //执行ajax回调函数
        function callBlack(){
            var readyState = xhr.readyState;//HTTP 请求的状态
            var status = xhr.status;//请求的状态码
    
            //如果HTTP 响应已经完全接收。并且 由服务器返回的 HTTP 状态代码,如 200 表示成功
                if(readyState == 4 && status == 200){    
                  var response   = xhr.responseText;//目前为止为服务器接收到的响应体  
                   console.log(response); 
                 } 
    
          }; 
    
    }

    兼容须知:

    Chrome 7+

    Firefox (Gecko2.0+) 4.0+

    Internet Explorer 10+

    Opera 12+

    Safari 5+

     

  • 相关阅读:
    eventlet设计模式
    backbone Model调用save方法的时候提交方式
    django form POST方法提交表达
    wordpress简单搭建个人博客
    docker-py环境配置
    EditPlus安装与注册
    xmind安装和升级
    统计学习的相关定义
    LaTeX初识
    flask_mail发送邮件
  • 原文地址:https://www.cnblogs.com/xxyy1122/p/4997084.html
Copyright © 2020-2023  润新知