Vue 文件上传交互怎么结合 Axios 封装文件上传接口

大明吖_3122

大明吖_3122

2026-10-21

135人浏览

原创

vue文件上传需用formdata构建载荷、axios实例统一配置、组件解耦逻辑;禁用手动设content-type,通过onuploadprogress显示进度,前置校验类型/大小,用url.createobjecturl预览,支持取消上传。

vue 文件上传交互怎么结合 axios 封装文件上传接口

Vue 文件上传交互结合 Axios 封装,核心在于三点:用 FormData 构建二进制载荷、用 Axios 实例统一管理请求配置、在组件中解耦选择/预览/上传逻辑。不写死 URL、不裸调 axios.post,才能应对接口变多、token 更新、错误提示风格统一等真实需求。

封装一个支持文件上传的 Axios 实例

避免每个组件都 import axios 再拼 baseURL 和 headers。推荐在 src/api/upload.js 中创建专用实例:

  • 设置 baseURL 和超时时间,比如 https://api.example.com/v1
  • 禁用默认的 Content-Type 自动设置(因为 FormData 会自动带 boundary)
  • 在请求拦截器里注入 token(若需):config.headers.Authorization = 'Bearer ' + getToken()
  • 响应拦截器统一处理 4xx/5xx,比如跳登录页或弹全局提示

组件内正确构造 FormData 并传入请求

不要手动设 headers: { 'Content-Type': 'multipart/form-data' } —— 这会破坏浏览器自动生成的 boundary,导致后端解析失败。正确做法是:

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17.2万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习