FormData + Ajax怎么实现上传进度监控

  介绍

小编给大家分享一下FormData + Ajax怎么实现上传进度监控,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

<强>什么是FormData ?

FormData对象可以组装一组用XMLHttpRequest发送请求的键/值对。它可以更灵活方便的发送表单数据,因为可以独立于表单使用。如果你把表单的编码类型设置为多部分/格式,则通过FormData传输的数据格式和表单通过提交()方法传输的数据格式相同,

<>强如何创建一个FormData对象

你可以自己创建一个FormData对象,然后通过调用它的append()方法添加字段,就像这样:

//实例化一个FormData对象   var  formData =, new  FormData ();   formData.append (“username",,“Groucho");   formData.append (“userid",, 123456),,//,数字,123456,会被立即转换成字符串,“123456”;//,HTML上的,文件类型输入(type=文件)的文件框,由用户选择   formData.append (“userfile", fileInputElement.files [0]);//,JavaScript  file-like 对象   var  content =, & # 39; & lt; a  id=癮"祝辞& lt; b  id=癰"祝辞嘿! & lt;/b> & lt;/a> & # 39;,,//,新文件的正文……   var  blob =, new  Blob([内容],,{,类型:“文本/xml"});   formData.append (“webmasterfile", blob);

注意:字段“userfile”和“webmasterfile”都包含一个文件。字段“标识”是数字类型,它将被FormData.append()方法转换成字符串类型(FormData对象的字段类型可以是Blob,文件,或者字符串:如果它的字段类型不是Blob也不是文件,则会被转换成字符串类型。

<强>使用jQuery Ajax的方法发送FormData数据

//记录当前时间   .getTime var 时间=new 日期()();//记录当前进度   var  percentage =零;//记录当前上传速度   var 速度=零;//记录已上传文件字节大小   var 加载=0;   . ajax({美元   ,url: & # 39; url # 39;   类型:大敌;“POST",   ,数据:formData,   ,contentType:假的,,//,必须,不设置内容类型   ,processData:假的,,//,必须,不处理数据   ,xhr: function  xhr (), {//才能获取原生的xhr对象   var 才能;xhr =, .ajaxSettings.xhr美元();   if 才能;(xhr.upload), {   ,,//添加,progress 事件监听   ,,xhr.upload.addEventListener(& # 39;进步# 39;,,function  (e), {   ,,,var  nowDate =, new 日期().getTime ();   ,,,//每一秒刷新一次状态   ,,,if  (nowDate 作用;time 祝辞=,1000),{   ,,,,//已上传文件字节数/总字节数   ,,,,percentage =,方法(时间/e.loaded  e.total  *, 100);   ,,,,//当前已传大小(字节数)- - -一秒前已传文件大小(字节数)   ,,,,velocity =, (e.loaded 安康;加载),/,1024;   ,,,,if  (percentage 祝辞=,99),{   ,,,,,美元(“.hintText") . html(& # 39;服务端正在解析,请稍后& # 39;);   ,,,,},{else    ,,,,,//修改上次记录时间及数据大小   ,,,,,time =, nowDate;   ,,,,,loaded =, e.loaded;   ,,,,}   ,,,},{else    ,,,,返回;   ,,,}   ,,,},假);   ,,}   return 才能,xhr;   },   成功,成功:function (反应),{//才能成功回调,,,   },   错误:大敌;function 错误(错误),{//才能失败回调,,,,   ,}   });

看完了这篇文章,相信你对“FormData + Ajax怎么实现上传进度监控”有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

FormData + Ajax怎么实现上传进度监控