当前位置: 首页 > news >正文

jquery.ajax + antd.Upload.customRequest文件上传进度

前情提要:大文件分片上传,需要利用Upload的customRequest属性自定义上传方法。也就是无法通过给Upload的action属性赋值上传地址进行上传,所以Upload组件自带的上传进度条,也没法直接用了,需要在customRequest中加工一下。

jquery.ajax上传进度

XMLHttpRequest.upload 属性返回一个XMLHttpRequestUpload对象,用来表示上传的进度。这个对象是不透明的,但是作为一个XMLHttpRequestEventTarget,可以通过对其绑定事件来追踪它的进度。
在这里插入图片描述

$.ajax({url, // 上传地址type, // get、post、put等类型data, // 上传参数cache: false, //上传文件不需要缓存processData: false, // 告诉jQuery不要去处理发送的数据contentType: false, // 告诉jQuery不要去设置contentTypesuccess, // 上传成功的处理error, // 上传失败的处理// ...其他ajax的参数请根据需求自定义哈,上面是我需要的// 重点在这里// 监听上传进度// 重点在这里xhr: function () {var xhr = new XMLHttpRequest();//使用XMLHttpRequest.upload监听上传过程,注册progress事件xhr.upload.addEventListener('progress', function (progressEvent) {// progressEvent.loaded是已上传的进度,progressEvent.total是总数,这里计算上传进度的百分比const percent = Math.round((progressEvent.loaded * 100) / progressEvent.total);// 这里调用的是customRequest的参数,需要把上传进度传给upload组件,后面解释// 也可以自行处理,比如自己写个进度条,根据percent改变进度条宽度e.onProgress({ percent });})return xhr;},
})

Upload.customRequest

官方的废话文学
customRequest详细一点的解释在github上,这里主要用到onProgress方法。

在这里插入图片描述
调用onProgress方法,参数是上传进度,Upload的上传进度条会根据参数显示。
不调用的话,进度条会一直卡在0%,知道上传成功后直接变成100%
在这里插入图片描述

代码

// e的属性如上面截图
customRequest: e => {$.ajax({url, // 上传地址type, // get、post、put等类型// 上传参数,我就直接把文件信息不做处理放到请求参数里了data: e.file,cache: false, //上传文件不需要缓存processData: false, // 告诉jQuery不要去处理发送的数据contentType: false, // 告诉jQuery不要去设置contentType// 上传成功的处理success: (res) => {// 一定要调用onSuccess告诉Upload组件上传成功,res的内容会在onChange参数里的file.responsee.onSuccess(res)}, // 上传失败的处理error: (err) => {// 告诉Upload组件上传失败,err内容会在onChange参数里的file.responsee.onError(err)},// ...其他ajax的参数请根据需求自定义// 监听上传进度xhr: function () {var xhr = new XMLHttpRequest();//使用XMLHttpRequest.upload监听上传过程,注册progress事件xhr.upload.addEventListener('progress', function (progressEvent) {// progressEvent.loaded是已上传的进度,progressEvent.total是总数,这里计算上传进度的百分比const percent = Math.round((progressEvent.loaded * 100) / progressEvent.total);// 上传进度传给upload组件e.onProgress({ percent });})return xhr;},
})
}

在这里插入图片描述

http://www.lryc.cn/news/413247.html

相关文章:

  • 一层5x1神经网络绘制训练100轮后权重变化的图像
  • Project #0 - C++ Primer
  • git提交commit信息规范,fix,feat
  • 服务器 Linux 的文件系统初探
  • 关于Unity转微信小程序的流程记录
  • AI入门指南:什么是人工智能、机器学习、神经网络、深度学习?
  • 网络安全中的IOC是指的什么?
  • 掌握AJAX技术:从基础到实战
  • Unity UGUI 实战学习笔记(6)
  • iOS面试之属性关键字(二):常见面试题
  • java开发设计模式详解
  • windows中node版本的切换(nvm管理工具),解决项目兼容问题 node版本管理、国内npm源镜像切换(保姆级教程,值得收藏)
  • 测试面试宝典(四十四)—— APP测试和web测试有什么区别?
  • 力扣高频SQL 50题(基础版)第三十七题
  • web基础之CSS
  • 全球轻型卡车胎市场规划预测:2030年市场规模将接近1153亿元,未来六年CAGR为2.0%
  • 8.2 数据结构王道复习 2.3.3 2.3.7选择题错题review
  • 【DL】神经网络与机器学习基础知识介绍(二)【附程序】
  • 6万字嵌入式最全八股文面试题大全及参考答案(持续更新)
  • iceberg 用户文档(持续更新)
  • 基于YOLOv8的船舶检测系统
  • 使用腾讯云域名解析实现网站重定向
  • 为什么相比直接使用new和std::shared_ptr构造函数,make_shared在内存分配和管理方面更为高效。
  • 7-Python数据类型——列表和元组的详解(增删改查、索引、切片、步长、循环)
  • 大数据-61 Kafka 高级特性 消息消费02-主题与分区 自定义反序列化 拦截器 位移提交 位移管理 重平衡
  • Google Gemma2 2B:语言模型的“小时代”到来?
  • 三线程顺序打印1-100
  • 中央处理器CPU
  • 用Python实现AI人脸识别
  • MSPM0G3507_2024电赛自动行驶小车(H题)_问题与感悟