html5异步上传文件-利用FormData对象+XHR新特性实现文件上传-带进度条

2023-09-16 0 9,278 百度已收录

明天小编要获得一个新技能,就是上传图片并显示进度条。 废话不多说,我们直接进入正题吧! 去!去!去! !

为达到治疗效果:

点击上传文件按钮后,如果没有选择文件,会弹出提示框选择要上传的文件。 否则,将显示上传图像的进度条。 上传完成后,页面上会显示相应的图片。

实施步骤:

① 定义UI结构

② 验证文件是否被选中

③ 添加文件到FormData

④ 使用xhr发起上传文件的请求

⑤ 监听onreadystatechange请求

⑥ 显示文件上传进度

⑦ 基于bootstrap绘制进度条的效果

⑧ 监控并上传完整风暴

【接下来我会按照实现步骤一一讲解,最后会附上完整代码,请仔细阅读~】

逐步分析:①定义UI结构

首先引入相关文件,bootstrap.css和jQuery.min.js

开始布局页面的基本结构(代码如下所示)

进度条的样式是从bootstrap官网->组件->进度条购买的。

最后,给出一个Img标签来显示上传到服务器的图像。

     
 
    
    
0

② 验证文件是否被选中

首先获取上传文件的按钮并为其添加点击波

获取选中的文件列表(files)

其中 var files = document.querySelector('#file1').files

通过id获取文件选择框。 文件选择框中有一个文件属性。 它是存储用户选择的文件的字段。 判断其长度是否大于等于0,如果是,则不选择任何文件。

  
          // 1.获取上传文件的按钮
        var btn = document.querySelector('#btn')
            // 2.为按钮添加 click 事件监听
        btn.addEventListener('click',function(){
            // 3.获取到选择的文件列表
            var files = document.querySelector('#file1').files
            if(files.length <= 0) {
                return alert('请选择要上传的文件!')
            }
           
         }

③向FormData添加文件

Ajax操作常用于提交表单数据。为了方便表单处理,HTML5新增了一个formData对象,可以模拟表单操作。

可以通过append将文件追加到FormData中。

   //1. 创建 FormData 对象
   var fd = new FormData()
   //2. 向 FormData 中追加文件,('自定义文件名',文件),因为是一个数组,取第一个文件所以索引为0
   fd.append('avatar',files[0])

④使用xhr发起上传文件的请求

XMLHttpRequest(简称xhr)是浏览器提供的Javascript对象,通过它可以请求服务器上的数据资源

创建xhr对象后,通过调用open函数指定请求方式和URL地址

这里需要注意! 由于您要上传文件,因此必须邮寄请求表。

调用send函数发起Ajax请求

  // 1. 创建 xhr 对象
  var xhr = new XMLHttpRequest()
  // 2. 调用 open 函数,指定请求类型与URL地址。其中,请求类型必须为 post
  xhr.open('POST','http://www.liulongbin.top:3006/api/upload/avatar')
  // 3. 发起请求
  xhr.send(fd)

⑤ 监听onreadystatechange请求

监控xhr对象的请求状态readyState; 以及服务器的响应状态

如果xhr.readyState都等于4html5异步上传文件,xhr.status都等于200,则获取服务器响应的数据html5异步上传文件

并将其转换为JS对象(方便后续获取上述值)并存储在自定义数据对象中

获取的数据中有很多属性,其中data.status代表上传状态。 如果是200则说明上传成功。

如果上传成功,页面会显示上传的图片。

xhr对象的readyState属性

值状态说明

未发送

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 html5 html5异步上传文件-利用FormData对象+XHR新特性实现文件上传-带进度条 https://www.wkzy.net/game/196616.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务