ajax上传附件进度条取消上传

有的项目会使用到附件上传,要求进度条和取消,之前没有使用axios写过,这次刚好碰到了,记录一下;

项目中版本
typescript 复制代码
"axios": "^0.27.2",
使用
typescript 复制代码
import axios from 'axios'
handleUploadAjax() {
    // 取消令牌生成器
    const CancelToken = axios.CancelToken;
    // 获取一个令牌对象, 调用source.cancel(),可以取消上传
    const source = CancelToken.source();
    let formdata = handleUploadFormdata({fileName: '', fileType: '', file: any});
     axios({
        url: 'url',
        headers: {
            'Authorization': `Bearer ${getUserToken() || ''}`,
            'Content-Type': 'multipart/form-data',
        },
        method: 'post',
        data: formdata,
        cancelToken: source.token,
        onUploadProgress: (event: any) => { // axios中自带获取文件上传进度条回调
            let percent = (event.loaded / event.total * 100).toFixed(2);
        }
    }).then((res) => {
    }).catch((err) => {
    });
}
FormData创建
typescript 复制代码
handleUploadFormdata(params: {fileName: '', fileType:'', file: any}){
    const formdata: any = new FormData();
    const entries = Object.entries(params);
    for (const [key, value] of entries) {
    formdata.append(key, value);
    };
    return formdata;
}
相关推荐
小江的记录本13 分钟前
【JEECG Boot】 JEECG Boot 数据字典管理——六大核心功能(内含:《JEECG Boot 数据字典开发速查清单》)
java·前端·数据库·spring boot·后端·spring·mybatis
小江的记录本14 分钟前
【JEECG Boot】 JEECG Boot——Online表单 系统性知识体系全解
java·前端·spring boot·后端·spring·低代码·mybatis
John_ToDebug14 分钟前
Chromium 页面类型与 IPC 通信机制深度解析
前端·c++·chrome
Fanfffff72015 分钟前
前端进阶:从请求竞态到并发控制(系统学习笔记)
前端·笔记·学习
大、男人16 分钟前
edge浏览器打开baidu.com很慢,我是如何解决的
前端·edge
吴声子夜歌17 分钟前
ES6——函数的扩展详解
前端·ecmascript·es6
斌味代码18 分钟前
Next.js 14 App Router 完全指南:服务端组件、流式渲染与中间件实战
开发语言·javascript·中间件
有趣的老凌18 分钟前
一篇文章带你了解 Agent Skills —— 告别AI“失控”
前端·agent·claude
~ rainbow~21 分钟前
前端转型全栈(二)——NestJS 入门指南:从 Angular 开发者视角理解后端架构
前端·javascript·angular.js