Upload

Radio Upload Image

在 Stackblitz 中打开

Multi-Select Upload Images

在 Stackblitz 中打开

Component Status

在 Stackblitz 中打开

Style Custom

在 Stackblitz 中打开

Upload Props

nametypedefaultdescriptionrequired
acceptString-File types that can be accepted. W3CMDNN
actionString-Uploading URLN
addContentString / Slot / Function-Typescript:string \| TNodesee more ts definitionN
allowUploadDuplicateFileBooleanfalseallow to upload duplicate name filesN
autoUploadBooleantruepost upload request automatically after files being selectedN
beforeUploadFunction-stop one of files to upload。Typescript:(file: UploadFile) => boolean \| Promise<boolean>N
captureString--N
dataObject-extra request data of uploading. formatRequest can redefine all request data。Typescript:Record<string, any> \| ((files: UploadFile[]) => Record<string, any>)N
disabledBooleanundefinedmake upload to be disabledN
filesArray[]v-model:files is supported。Typescript:Array<T>N
defaultFilesArray[]uncontrolled property。Typescript:Array<T>N
formatFunction-to redefine UploadFile data structure。Typescript:(file: File) => UploadFileN
formatRequestFunction-redefine request data。Typescript:(requestData: { [key: string]: any }) => { [key: string]: any }N
formatResponseFunction-redefine response data structure。Typescript:(response: any, context: FormatResponseContext) => ResponseType type ResponseType = { error?: string; url?: string } & Record<string, any> interface FormatResponseContext { file: UploadFile; currentFiles?: UploadFile[] }see more ts definitionN
headersObject-HTTP Request Header。Typescript:{[key: string]: string}N
imagePropsObject-Typescript:ImagePropsImage API Documentssee more ts definitionN
maxNumber0max count of files limitN
methodStringPOSTHTTP request method。options: POST/GET/PUT/OPTIONS/PATCH/post/get/put/options/patchN
multipleBooleanfalsemultiple files uploadingN
previewBooleantrue-N
requestMethodFunction-custom upload request method。Typescript:(files: UploadFile \| UploadFile[]) => Promise<RequestMethodResponse> interface RequestMethodResponse { status: 'success' \| 'fail'; error?: string; response: { url?: string; files?: UploadFile[]; [key: string]: any } }see more ts definitionN
sizeLimitNumber / Object-files size limit。Typescript:number \| SizeLimitObj interface SizeLimitObj { size: number; unit: SizeUnit ; message?: string } type SizeUnitArray = ['B', 'KB', 'MB', 'GB'] type SizeUnit = SizeUnitArray[number]see more ts definitionN
useMockProgressBooleantrueuse mock progress, instead of real progressN
valueArray[]file list。v-model and v-model:value is supported。Typescript:Array<T>N
defaultValueArray[]file list。uncontrolled property。Typescript:Array<T>N
withCredentialsBooleanfalseuploading request with cookieN
onChangeFunctionTypescript:(value: Array<T>, context: UploadChangeContext) => void
trigger on uploaded files change。see more ts definition
interface UploadChangeContext { e?: MouseEvent \| ProgressEvent; response?: any; trigger: UploadChangeTrigger; index?: number; file?: UploadFile; files?: UploadFile[] }

type UploadChangeTrigger = 'add' \| 'remove' \| 'abort' \| 'progress-success' \| 'progress' \| 'progress-fail'
N
onClickUploadFunctionTypescript:(context: { e: MouseEvent }) => void
N
onFailFunctionTypescript:(options: UploadFailContext) => void
response.error used for error tips, formatResponse can format responsesee more ts definition
interface UploadFailContext { e?: ProgressEvent; failedFiles: UploadFile[]; currentFiles: UploadFile[]; response?: any; file: UploadFile; XMLHttpRequest?: XMLHttpRequest}
N
onPreviewFunctionTypescript:(options: { file: UploadFile; index: number; e: MouseEvent }) => void
trigger on preview elements click
N
onProgressFunctionTypescript:(options: ProgressContext) => void
uploading request progress event。see more ts definition
interface ProgressContext { e?: ProgressEvent; file?: UploadFile; currentFiles: UploadFile[]; percent: number; type: UploadProgressType; XMLHttpRequest?: XMLHttpRequest }

type UploadProgressType = 'real' \| 'mock'
N
onRemoveFunctionTypescript:(context: UploadRemoveContext) => void
trigger on file removed。see more ts definition
interface UploadRemoveContext { index?: number; file?: UploadFile; e: MouseEvent }
N
onSelectChangeFunctionTypescript:(files: File[], context: UploadSelectChangeContext) => void
trigger after file choose and before upload。see more ts definition
interface UploadSelectChangeContext { currentSelectedFiles: UploadFile[] }
N
onSuccessFunctionTypescript:(context: SuccessContext) => void
trigger on all files uploaded successfully。see more ts definition
interface SuccessContext { e?: ProgressEvent; file?: UploadFile; fileList?: UploadFile[]; currentFiles?: UploadFile[]; response?: any; results?: SuccessContext[]; XMLHttpRequest?: XMLHttpRequest }
N
onValidateFunctionTypescript:(context: { type: UploadValidateType, files: UploadFile[] }) => void
trigger on length over limit, or trigger on file size over limit。see more ts definition
type UploadValidateType = 'FILE_OVER_SIZE_LIMIT' \| 'FILES_OVER_LENGTH_LIMIT' \| 'FILTER_FILE_SAME_NAME' \| 'BEFORE_ALL_FILES_UPLOAD' \| 'CUSTOM_BEFORE_UPLOAD'
N

Upload Events

nameparamsdescription
change(value: Array<T>, context: UploadChangeContext)trigger on uploaded files change。see more ts definition
interface UploadChangeContext { e?: MouseEvent \| ProgressEvent; response?: any; trigger: UploadChangeTrigger; index?: number; file?: UploadFile; files?: UploadFile[] }

type UploadChangeTrigger = 'add' \| 'remove' \| 'abort' \| 'progress-success' \| 'progress' \| 'progress-fail'
click-upload(context: { e: MouseEvent })-
fail(options: UploadFailContext)response.error used for error tips, formatResponse can format responsesee more ts definition
interface UploadFailContext { e?: ProgressEvent; failedFiles: UploadFile[]; currentFiles: UploadFile[]; response?: any; file: UploadFile; XMLHttpRequest?: XMLHttpRequest}
preview(options: { file: UploadFile; index: number; e: MouseEvent })trigger on preview elements click
progress(options: ProgressContext)uploading request progress event。see more ts definition
interface ProgressContext { e?: ProgressEvent; file?: UploadFile; currentFiles: UploadFile[]; percent: number; type: UploadProgressType; XMLHttpRequest?: XMLHttpRequest }

type UploadProgressType = 'real' \| 'mock'
remove(context: UploadRemoveContext)trigger on file removed。see more ts definition
interface UploadRemoveContext { index?: number; file?: UploadFile; e: MouseEvent }
select-change(files: File[], context: UploadSelectChangeContext)trigger after file choose and before upload。see more ts definition
interface UploadSelectChangeContext { currentSelectedFiles: UploadFile[] }
success(context: SuccessContext)trigger on all files uploaded successfully。see more ts definition
interface SuccessContext { e?: ProgressEvent; file?: UploadFile; fileList?: UploadFile[]; currentFiles?: UploadFile[]; response?: any; results?: SuccessContext[]; XMLHttpRequest?: XMLHttpRequest }
validate(context: { type: UploadValidateType, files: UploadFile[] })trigger on length over limit, or trigger on file size over limit。see more ts definition
type UploadValidateType = 'FILE_OVER_SIZE_LIMIT' \| 'FILES_OVER_LENGTH_LIMIT' \| 'FILTER_FILE_SAME_NAME' \| 'BEFORE_ALL_FILES_UPLOAD' \| 'CUSTOM_BEFORE_UPLOAD'

UploadFile

nametypedefaultdescriptionrequired
lastModifiedNumber--N
nameString--N
percentNumber--N
rawObject-Typescript:FileN
responseObject-Typescript:{ [key: string]: any }N
sizeNumber--N
statusString-Typescript: 'success' \| 'fail' \| 'progress' \| 'waiting'N
typeString--N
uploadTimeString-upload timeN
urlString--N
PlainObject--PlainObject is not an attribute of UploadFile,it means you can add and attributes to UploadFile, type PlainObject = {[key: string]: any}'N

CSS Variables

The component provides the following CSS variables, which can be used to customize styles.

NameDefault ValueDescription
--td-upload-add-color@font-gray-3-
--td-upload-add-icon-font-size28px-
--td-upload-background@upload-add-bg-color-
--td-upload-delete-icon-color@font-white-1-
--td-upload-grid-columns4-
--td-upload-height80px-
--td-upload-radius@radius-default-
--td-upload-width80px-

何时使用

当需要进行图片上传时使用。

组件搭配使用

通常用于图片上传,点击上传按钮可唤起动作面板,供用户选择不同渠道进行新的上传。

点击已经上传的图片可跳转图片预览,让用户对已上传的图片进行快速查看。

推荐/慎用示例

若上传的文件有尺寸、格式、数量限制,推荐在文案中进行明确标识。

上传特定证件图片,特别是涉及到证件正反面时,推荐结合图示进行上传指引,更加直观。