zoukankan      html  css  js  c++  java
  • 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+

     

  • 相关阅读:
    HTML-body标签介绍-2
    HTML-body标签介绍-1
    HTML-简介及header
    中文字体编辑工具 Fontmin
    移动端点击复制文本 clipboard.js
    alert弹窗样式修改
    关闭微信页面与微信分享等配置
    Emmet 使用
    js cookie
    select 清除默认样式
  • 原文地址:https://www.cnblogs.com/xxyy1122/p/4997084.html
Copyright © 2011-2022 走看看