ajax异步上传文件

FormData对象介绍

FormData:字母意思就是表单数据,这是h5中新增的一个内置对象(构造器),它可以获取任何类型的表单项的值,比如text/radio/checkbox/file/textarea,适用于获取大量的表单项的值。常用于发送Ajax请求。
优点:简单的代码,就能将表单中所有类型的数据都收集到,包括文件域的内容,非常方便。
缺点:因为是h5新增,所以IE9+才支持。

ajax异步使用FormData对象上传文件带进度条

上传大文件就需要修改php.ini,主要修改三个max。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改完毕,重启Apache。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

<form name="myform">
   
    图 片:<input type="file" name="pic"><br>
    <input type="button" value="提交" id="btn">
</form>

<progress style="display: none;"></progress>

<script>
    //找button按钮,绑定单击事件
    document.getElementById('btn').onclick = function () {
        /***** 收集表单数据 *****/
        //var username = document.myform.username.value;
        //var pwd = document.myform.pwd.value;
        //....
        var form = document.myform;
        var fd = new FormData(form); //fd 就是收集到所有的数据
        /***** 发送Ajax请求 *****/
        var xhr = new XMLHttpRequest();
        /********** 制作进度条开始 **********/
        //console.log(xhr);
        //console.log(xhr.upload); // 发现有一个onprogress的事件
        var pro = document.getElementsByTagName('progress')[0];
        //当上传进度发生变化的时候,会触发下面的事件
        xhr.upload.onprogress = function (evt) {
            pro.setAttribute('max', evt.total);
            pro.setAttribute('value', evt.loaded);
            pro.style.display = 'block';
        };
        /********** 制作进度条结束 **********/
        xhr.onreadystatechange = function () {

        };
        xhr.open('post', '07FormData.php');
        xhr.send(fd);
    };
</script>


</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值