You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue中使用Axios配置onUploadProgress监听上传进度报错如何解决

问题排查与解决方案

你遇到的ERR_CONNECTION_RESET报错是现有代码的配置、语法错误共同导致的,删除onUploadProgress后请求正常,是因为新增配置触发了代码的严格校验,暴露了原本被浏览器/框架容错机制掩盖的问题,具体修复方案如下:

核心错误点

  • 请求头配置错误:你手动写的content type键名、multipart/form data值都缺少连字符,是无效配置。且传递FormData对象时,Axios会自动生成带boundary参数的Content-Type请求头,手动设置会丢失boundary,导致服务器无法解析请求体,直接断开连接。
  • 语法错误:异步请求关键字拼写错误,wait应改为await,且需要放在async修饰的函数内;catch回调中错误引用了全局Error构造函数,没有传入实际捕获的error参数。
  • onUploadProgress写法风险:单行箭头函数随意换行,部分打包工具会自动插入分号导致回调逻辑被截断。

修正后可运行代码

// 注意当前执行上传的函数需要添加async修饰,例如 async handleUpload() {}
this.video = event.target.files[0];
const data = new FormData();
data.append("file", this.video);
data.append("key","1pv6gzpm7mmynwa1l");

const config= {
  // 删除手动设置的Content-Type,交给Axios自动处理即可
  onUploadProgress: (progressEvent) => {
    // 可直接计算百分比用于页面展示
    const uploadPercent = Math.round((progressEvent.loaded * 100) / progressEvent.total);
    console.log('已上传字节数:', progressEvent.loaded, '上传进度:', uploadPercent + '%');
  },
};

await axios.post(this.urlUpload, data, config)
.then((response) => {
  this.showSuccess(response.data.message);
})
.catch((error) => {
  this.showError(error);
});

额外排查项

如果修改后仍存在问题,可按以下顺序排查:

  • 确认Axios版本≥0.25.0,旧版本存在onUploadProgress回调的已知兼容问题
  • 检查全局请求拦截器中是否有覆盖config参数的逻辑,导致onUploadProgress被异常修改
  • 确认后端接口没有设置过小的请求体上限,大文件上传时超过限制会被服务器主动断连

内容的提问来源于stack exchange,提问作者Omar Mohamed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:36:05