Skip to content

上传接入 ​

Web 通用组件位于 src/components/custom/file-upload.vue,请求入口为 fetchUploadFile。当前通用图片上传支持 JPEG、PNG;用户导入等业务文件使用各自专用接口,不通过图片组件上传。

最小示例 ​

vue
<script setup lang="ts">
import { ref } from 'vue';
import FileUpload from '@/components/custom/file-upload.vue';

const imageId = ref<string | string[] | undefined>();
</script>

<template>
  <FileUpload v-model:value="imageId" accept="image/jpeg,image/png" list-type="image-card" :max="1" />
</template>

单文件模式返回字符串 ID,清空后为 undefined;多文件模式返回字符串数组。组件公开的更新事件使用联合类型,因此示例 model 保留联合类型,提交业务表单前再按单文件规则校验。

属性与事件速查 ​

属性或事件用途
v-model:value上传完成的 fileId 或 fileId 数组
business-type、business-id随上传提交业务关联信息;不能替代服务端归属检查
accept文件选择器类型提示,不构成安全校验
multiple、max多文件与数量;max 大于 1 也会启用多文件模式
list-typetext、image 或 image-card
file-urls编辑回显的 fileId → fileUrl 映射
disabled禁用交互
change单个上传完成,返回 fileId、fileUrl、fileName
v-model:file-list需要管理完整上传列表时使用 UploadFileInfo[]

编辑时同时传入已保存的 ID 和 URL 映射。保存业务数据时提交 ID,由后端验证文件归属与引用权限;不要只保存临时预览地址。

上传策略与删除 ​

fetchUploadFile 会根据场景读取运行时 uploads 策略并做前置校验;服务端继续验证类型、大小与内容。限制受部署硬上限、租户设置和业务解析规则共同约束,以最终服务端结果为准。策略来源与错误处理见设置接口与上传策略。

从组件列表移除文件只更新页面选择,不会调用后端删除接口。是否解绑、删除实际文件及清理未引用上传,需要业务流程明确处理;删除前检查当前用户权限和其他引用。

验证与排错 ​

验证成功上传、大小超限、错误类型、网络失败、编辑回显和移除后保存。上传成功但表单保存失败时,应保留用户可继续操作的状态。文件 ID、URL 与业务 ID 均保持字符串,不转换为 Number。