我用 axios 上传文件,想加个进度条,但 onUploadProgress 回调好像没触发,控制台也没报错。
试过这样写:
axios.post('/upload', file, {
onUploadProgress: (progressEvent) => {
console.log('上传进度:', progressEvent.loaded / progressEvent.total);
}
})
但进度日志完全没输出,是我漏了什么配置吗?还是得用原生 XMLHttpRequest 才行?
第一个,
file直接丢进去不行,得用FormData包一层。第二个,本地开发环境上传太快,进度条一闪而过你根本看不见,以为没触发。
直接复制过去试试:
如果本地测试想看清进度条效果,可以找个大点的文件,或者用 Chrome 开发者工具把网速调慢,Network 面板里有个 Throttling 选项,选 Slow 3G 就能看清进度变化了。
还有个坑,某些版本的 axios 在 Node.js 环境下不支持
onUploadProgress,但浏览器端没问题,确保你是在浏览器里跑的。