QuiUpload 组件
基本用法
组件模式(fileType)
属性
file-type:上传视图模式,可选image-view|video-view|audio-view|file|dragger-filemax:最大上传数量,1为单文件模式,影响移除行为与展示accept:允许的文件扩展名列表,结合AcceptType使用,如AcceptType.Imagefile-size:文件大小上限(MB),如2表示 2MB,上限校验在上传前执行data-type:返回值类型,设置为'string'时为单文件 URL 字符串,否则为列表is-set-fields-value:是否根据v-model初始值回显文件列表,默认true- 透传
naive-ui的UploadProps:如action、headers、data、disabled、list-type等
事件
@finish:上传完成,组件内部会根据data-type更新v-model(字符串或列表)@remove:移除文件,单文件模式会清空,列表模式按下标移除@before-upload:上传前校验,校验文件类型、大小、文件名合法性@error:上传错误,打印后端返回的错误信息,便于排查
插槽
dragger-file模式下使用NUploadDragger,可通过默认插槽自定义拖拽区域内容- 其他模式可以在
NUpload默认插槽中放置触发按钮(示例中使用NButton)
返回值结构(v-model)
- 字符串模式:当
data-type='string'且max=1,v-model:value为文件url字符串 - 列表模式:
v-model:value为数组,项结构:{ id: string, name: string, url: string }
AcceptType 对照表
AcceptType.Image:.jpg,.jpeg,.png,.gif,.bmp,.webp,.svgAcceptType.Video:.mp4,.webm,.ogg,.mov,.avi,.wmv,.flv,.mkvAcceptType.Audio:.mp3,.wav,.ogg,.aac,.flac,.m4aAcceptType.File:.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt,.pdf,.zip,.rar,.7z,.tar,.gz
与表单集成
vue
<script setup lang="ts">
import type { FormSchema } from '@quiteer/naive-extra'
import { AcceptType, QuiForm, QuiUpload, useUploadProps } from '@quiteer/naive-extra'
const schemas: FormSchema[] = [
{ field: 'name', label: '姓名', component: 'NInput' },
// 将上传作为表单字段,支持字符串或列表两种模式
{ field: 'avatar', label: '头像', component: 'QuiUpload' }
]
// 生成常用上传配置
const uploadProps = useUploadProps({
accept: AcceptType.Image,
multiple: true,
fileType: 'image-view'
})
/**
* 函数:提交处理
* 作用:获取并处理表单值(其中上传字段可能为字符串或文件列表)
*/
function handleSubmit(values: Record<string, any>) {
// values.avatar 可能是字符串(url)或数组(id/name/url)
console.log(values)
}
</script>
<template>
<QuiForm :schemas="schemas">
<template #avatar>
<QuiUpload v-bind="uploadProps" />
</template>
<template #action-button>
<NButton type="primary" @click="handleSubmit">
提交
</NButton>
</template>
</QuiForm>
</template>使用建议
- 单文件返回字符串:设置
data-type='string'且max=1 - 文件类型校验:优先使用
AcceptType.*提供的枚举,确保与before-upload一致 - 大小限制:设置
file-size并在 UI 上提示;错误信息通过@error查看 - 初始值回显:
is-set-fields-value=true时,字符串或列表均会自动生成已完成文件项