Upload 上传

用于文件上传,支持按钮触发、拖拽上传、图片卡片等多种交互形式。另有 ImageUpload 专门用于单图片上传场景。

综合示例
完整演示:配置上传接口、文件列表、成功/失败回调、删除确认弹窗等。
基础用法
最简单的文件上传,点击按钮选择文件即可。不设置 action 时使用模拟上传。
配置上传接口
设置 action 指定服务端地址,组件使用 XMLHttpRequest 发送文件。支持 headers(请求头)、data(额外参数)、name(字段名)、withCredentials(携带 cookie)等配置。
文件将上传至 api.example.com
自定义上传逻辑
通过 custom-request 接管上传流程,适合对接 OSS、S3、COS 等云存储。回调参数含 file、onProgress、onSuccess、onError。
自定义上传到云存储
拖拽上传
设置 drag 启用拖拽区域,搭配 tip 显示提示信息。

点击或拖拽文件到此区域上传

支持 jpg、png 格式,单文件不超过 5MB

拖拽区自定义内容
使用 #drag 插槽自定义拖拽区展示内容。

将文件拖到此处

支持批量上传

手动上传
设置 auto-upload=false,选择文件后不自动上传,需通过 ref 调用 startUpload 手动触发。适合表单场景:先选文件,填完表单再统一提交。
选择文件后点击下方按钮上传
上传前校验
通过 before-upload 钩子在上传前校验,返回 false 取消上传。支持异步校验。
仅支持上传小于 2MB 的图片文件
多选与数量限制
设置 multiple 允许多选,limit 限制数量,超出触发 exceed 事件。
最多上传 3 个文件
图片列表模式
设置 list-type=picture,显示图片缩略图列表,点击可预览大图。
仅支持图片文件
照片墙模式
设置 list-type=picture-card,以卡片网格展示图片,hover 可预览/删除。
上传
文件大小与类型限制
max-size 限制大小(字节),accept 限制类型,超出触发 error 事件。
仅支持 PDF/Word,单文件不超过 2MB
禁用状态
设置 disabled 禁用上传。
自定义触发按钮
使用默认插槽自定义触发区域。

ImageUpload 单图片上传

专门用于单图片上传场景,v-model 绑定图片 URL,内置预览/删除功能,支持自定义上传逻辑。

基础用法
通过 v-model 绑定图片 URL,选择图片后自动展示预览,可点击预览大图、删除重新上传。
上传图片
图片 URL:未上传
配置上传接口
设置 action 后,选择图片会通过 XMLHttpRequest 上传到服务端,v-model 绑定服务端返回的图片 URL。
上传图片
自定义尺寸
通过 width 和 height 设置预览框尺寸,tip 设置提示文字。
头像
封面图
上传前校验
通过 before-upload 校验文件类型和大小,max-size 限制大小。
不超过 2MB
自定义上传
通过 custom-request 接管上传,适合对接云存储。
上传图片
禁用状态
设置 disabled 禁用上传和删除。

Upload Props

参数类型默认值说明
modelValue(string | number)[][]已上传文件的 uid 列表(v-model)
multiplebooleanfalse是否允许多选文件
acceptstring接受的文件类型(MIME),picture 模式默认 image/*
disabledbooleanfalse是否禁用
dragbooleanfalse是否启用拖拽上传区域
limitnumber最大上传数量
autoUploadbooleantrue是否选取后自动上传
actionstring服务端上传地址(设置后使用 XMLHttpRequest)
methodstring'POST'HTTP 请求方法
headersRecord<string, string>{}自定义请求头
dataRecord<string, any>{}上传附带额外参数
namestring'file'上传文件的字段名
withCredentialsbooleanfalse是否携带 cookie
listType'text' | 'picture' | 'picture-card''text'文件列表展示类型
maxSizenumber文件大小上限(字节),超出触发 error 事件
tipstring提示文本
buttonTextstring'上传文件'按钮文字
dragTextstring'点击或拖拽文件到此区域上传'拖拽区域文字
beforeUpload(file: File, fileList: UploadFile[]) => boolean | Promise<boolean>上传前钩子,返回 false 取消上传
customRequest(options) => void自定义上传实现,适合对接云存储

Upload Events

事件名参数说明
update:modelValue(uids: (string|number)[])文件 uid 列表变化时触发
update:fileList(fileList: UploadFile[])文件列表变化时触发
change(fileList: UploadFile[])文件列表变化时触发
success(file: UploadFile, response: any)文件上传成功
error(file: UploadFile, error: Error)文件上传失败
progress(file: UploadFile, percent: number)上传进度变化
exceed(files: File[])超出数量限制
preview(file: UploadFile)点击文件预览
remove(file: UploadFile)文件被删除

Upload Slots

插槽名说明
default自定义触发区域(非拖拽、非 picture-card 模式)
drag自定义拖拽区域内容

Upload Methods

方法名类型说明
clearFiles() => void清空文件列表
startUpload() => void手动开始上传所有待上传文件

UploadFile 数据结构

属性类型说明
uidstring文件唯一标识
namestring文件名
sizenumber文件大小(字节)
status'pending' | 'uploading' | 'done' | 'error'文件状态
progressnumber上传进度(0-100)
rawFile原始文件对象
urlstring文件 URL
thumbUrlstring缩略图 URL
responseany服务端响应数据

ImageUpload Props

参数类型默认值说明
modelValuestring''图片 URL(v-model)
actionstring服务端上传地址
methodstring'POST'HTTP 请求方法
headersRecord<string, string>{}自定义请求头
dataRecord<string, any>{}上传附带额外参数
namestring'file'上传文件字段名
withCredentialsbooleanfalse是否携带 cookie
customRequest(options) => void自定义上传实现
beforeUpload(file: File) => boolean | Promise<boolean>上传前钩子
maxSizenumber文件大小上限(字节)
acceptstring'image/*'接受的文件类型
disabledbooleanfalse是否禁用
widthnumber | string104预览框宽度
heightnumber | string104预览框高度
tipstring'上传图片'提示文字

ImageUpload Events

事件名参数说明
update:modelValue(url: string)图片 URL 变化时触发
change(url: string)图片 URL 变化时触发
success(response: any)上传成功时触发
error(error: Error)上传失败或校验不通过时触发
progress(percent: number)上传进度变化时触发
remove()图片被删除时触发

ImageUpload Slots

插槽名说明
default自定义上传触发区域内容(未上传时)