JS上传图片文件的进度条提示记录

关键点就是onprogress这个事件,它是XMLHttpRequest对象的一个回调函数,在上传或者下载过程中会周期性执行。接受一个参数event,event有两个参数:

  1. loaded:已经传输的数量
  2. total:要传输的总数量
var xmlhttp = new XMLHttpRequest(),
  method = 'GET',
  url = 'https://developer.mozilla.org/';

xmlhttp.open(method, url, true);
xmlhttp.onprogress = function (event) {
  //do something 
  const progressRatio = event.loaded / event.total
};
xmlhttp.send();

使用axios时,利用axios的config配置选项来进行相应的处理 :

{
 // `onUploadProgress` 允许为上传处理进度事件
  onUploadProgress: function (progressEvent) {
    // 对原生进度事件的处理
  },

  // `onDownloadProgress` 允许为下载处理进度事件
  onDownloadProgress: function (progressEvent) {
    // 对原生进度事件的处理
  },
}
 // 上传进度
        let onUploadProgress = (progressEvent) => { //计算progress的百分比方法
          this.progressRatio = progressEvent.loaded / progressEvent.total
        };
        const config = { //axios的配置中可以配置该方法
          onUploadProgress,
          headers: {
            'Content-Type': 'multipart/form-data'
          },
          withCredentials: false,
        };
        try {
          // 上传到七牛
          const res = await axios.post('your path', this.getFromData(data), config);
          this.previewImg.src = `${domain}/${res.data.key}`;
        } catch (e) {
          this.progressRatio = 0;
          console.log('上传失败', e)
        }

其他也就是一些样式上,配合背景色做一个百分比显示,或者圆形图案做一个canvas的loading都可以

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Ajax和XMLHttpRequest 我们通常将Ajax等同于XMLHttpRequest,但细究起来它们两个是...
    changxiaonan阅读 2,390评论 0 2
  • (纯js的质量压缩,非长宽压缩) 此demo为大于1M对图片进行压缩上传 若小于1M则原图上传,可以根据自己实际需...
    丨ChenSir丨阅读 1,003评论 0 1
  • 文件上传在网页应用中应该是一个很常用的功能,但是我是第一次做,所以也是网上找资料了,看了如阮一峰老师的《文件上传的...
    jorgon阅读 1,559评论 0 0
  • 一、引言 本文会详细介绍XMLHttpRequest上传部分及相关的理论知识。不了解XMLHttpRequest对...
    createEngine阅读 1,017评论 0 0
  • 二、IO io-controller.js-IOController类-IO控制器 属性分为基本信息、暂存区信息、...
    云峰yf阅读 6,370评论 0 3

友情链接更多精彩内容