Skip to content

TUpload / 上传

Upload component with drag-and-drop zone, file preview, progress tracking, retry support, and full locale customization. / 上传组件提供拖拽上传区域、文件预览、进度追踪、重试支持和完整的国际化自定义。

Props / 属性

PropType / 类型Default / 默认值Description / 说明
actionstringUpload URL / 上传地址
acceptstringAccepted file types (e.g. "image/*")
multiplebooleanfalseAllow multiple files
maxSizenumberMax file size in bytes
disabledbooleanfalseDisabled
localeUploadLocaleCustom locale text / 自定义文本
namestring'file'File field name
headersRecord<string, string>Custom upload headers
withCredentialsbooleanfalseSend cookies

v-model

v-modelType / 类型Description / 说明
v-modelUploadFileInfo[]File list / 文件列表

UploadFileInfo 接口

ts
interface UploadFileInfo {
  uid: string
  name: string
  size: number
  status: 'pending' | 'uploading' | 'success' | 'error'
  percent?: number
  url?: string
  response?: any
}

Basic Usage / 基础用法

vue
<script setup lang="ts">
import { TUpload } from '@gulcc/tabler-vue'

const files = ref([])
</script>

<template>
  <TUpload v-model="files" action="/api/upload" />
</template>

Advanced Usage / 进阶场景

vue
<script setup lang="ts">
import { TUpload, type UploadFileInfo } from '@gulcc/tabler-vue'

const files = ref<UploadFileInfo[]>([])
</script>

<template>
  <!-- With file type restriction / 限定文件类型 -->
  <TUpload
    v-model="files"
    action="/api/upload"
    accept="image/*"
    multiple
  />

  <!-- With size limit / 限制大小 -->
  <TUpload
    v-model="files"
    action="/api/upload"
    :max-size="5 * 1024 * 1024"
    accept="image/*"
  />

  <!-- Disabled / 禁用 -->
  <TUpload v-model="files" action="/api/upload" disabled />
</template>

Tips / 避坑指南

  • maxSize is in bytes — calculate accordingly (e.g., 5 * 1024 * 1024 for 5MB)
  • accept follows HTML <input accept> format, e.g. "image/*", ".pdf,.doc", "video/*"
  • Upload progress is tracked via percent in UploadFileInfo — status transitions: pending → uploading → success | error
  • File preview is auto-generated for images; other file types show a generic file icon
  • Locale can be customized via the locale prop using the UploadLocale interface — useful for i18n