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+

时间: 2024-10-13 01:43:24

H5实现formdata+ajax+上传进度上传文件的相关文章

ajax实现带进度条的文件上传

jsp部分:设计一个表单,form的属性添加 enctype="multipart/form-data",设计一个iframe,设为隐藏.form的target等于iframe的name; servlet部分:文件上传用的Commons-FileupLoad,需要两个Jar,commons-fileupload和commons-io,少了第二个会报出找不到类的异常: 第一个servlet处理上传,及把上传进度保存到session,第二个servlet处理ajax请求,回传session

Ajax技术——带进度条的文件上传

1.概述 在实际的Web应该开发或网站开发过程中,经常需要实现文件上传的功能.在文件上传过程中,经常需要用户进行长时间的等待,为了让用户及时了解上传进度, 可以在上传文件的同时,显示文件的上传进度条.运行本实例,如图1所示,访问文件上传页面,单击“浏览”按钮选择要上传的文件,注意文件不能超过 50MB,否则系统将给出错误提示.选择完要上传的文件后,单击“提交”按钮,将会上传文件并显示上传进度. 2.技术要点 主要是应用开源的Common-FileUpload组件来实现分段文件上传,从而实现在上传

(H5)FormData+AJAX+SpringMVC跨域异步上传文件

最近都没时间整理资料了,一入职就要弄懂业务,整天被业务弄得血崩. 总结下今天弄了一个早上的跨域异步上传文件.主要用到技术有HTML5的FormData,AJAX,Spring MVC. 首先看下上传页面: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script type="text/javascript" src="js/plugins/

带进度条的文件上传

Ajax技术——带进度条的文件上传 1.概述 在实际的Web应该开发或网站开发过程中,经常需要实现文件上传的功能.在文件上传过程中,经常需要用户进行长时间的等待,为了让用户及时了解上传进度,可以在上传文件的同时,显示文件的上传进度条.运行本实例,如图1所示,访问文件上传页面,单击“浏览”按钮选择要上传的文件,注意文件不能超过50MB,否则系统将给出错误提示.选择完要上传的文件后,单击“提交”按钮,将会上传文件并显示上传进度. 2.技术要点 主要是应用开源的Common-FileUpload组件来

Java使用comms-net jar包完成ftp文件上传进度的检测功能

本文章只讲述大致的思路与本次功能对应的一些开发环境,具体实现请结合自己的开发情况,仅供参考,如果有不对的地方,欢迎大家指出! 准备环境:JDK1.7 OR 1.8.eclipse.ftp服务器(可自行搭建).comms-net jar包3.3版本的.其余的就不详细列举了. 1.在现实开发中ftp服务器和项目的部署服务器基本不会是同一台,所以基础springmvc的文件上传进度获取,只能获取到文件的二进制流到达项目后台的进度.对于真实的ftp文件上传进度,需要使用comms-net提供的监听器来实

PHP+Ajax异步带进度条上传文件

前端引入文件 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script> <script src="

ajax上传进度条

<script type="text/javascript"> function register(){ var frm = document.getElementById('frm'); var fd = new FormData(frm); var request = new XmlHttpRequest(); request.open('post', './demo.php'); request.onreadystatechange = function(){ if

ajax监听上传进度

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #d8a100 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #596972 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #6b82d9 } p.p4 { mar

PHP利用Session实现上传进度

实现文件上传进度条基本是依靠JS插件或HTML5的File API来完成,其实PHP配合ajax也能实现此功能. PHP手册对于session上传进度是这么介绍的: 当 session.upload_progress.enabled INI 选项开启时,PHP 能够在每一个文件上传时监测上传进度. 这个信息对上传请求自身并没有什么帮助,但在文件上传时应用可以发送一个POST请求到终端(例如通过XHR)来检查这个状态 当一个上传在处理中,同时POST一个与INI中设置的session.upload