element-plus/docs/en-US/component/upload.md

142 lines
12 KiB
Markdown

---
title: Upload
lang: en-US
---
# Upload
Upload files by clicking or drag-and-drop.
## Basic Usage
:::demo Customize upload button type and text using `slot`. Set `limit` and `on-exceed` to limit the maximum number of uploads allowed and specify method when the limit is exceeded. Plus, you can abort removing a file in the `before-remove` hook.
upload/basic
:::
## Cover Previous File
:::demo Set `limit` and `on-exceed` to automatically replace the previous file when select a new file.
upload/limit-cover
:::
## User Avatar
Use `before-upload` hook to limit the upload file format and size.
:::demo
upload/avatar
:::
## Photo Wall
Use `list-type` to change the fileList style.
:::demo
upload/photo-wall
:::
## Custom Thumbnail
Use `scoped-slot` to change default thumbnail template.
:::demo
upload/custom-thumbnail
:::
## File List with Thumbnail
:::demo
upload/file-list-with-thumbnail
:::
## File List Control
Use `on-change` hook function to control upload file list.
:::demo
upload/file-list
:::
## Drag to Upload
You can drag your file to a certain area to upload it.
:::demo
upload/drag-and-drop
:::
## Manual Upload
:::demo
upload/manual
:::
## Upload API
### Attributes
| Name | Description | Type | Default | Required |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -------- | -------- |
| `action` | request URL. | `string` | — | Yes |
| `headers` | request headers. | `Headers \| Record<string, any>` | — | No |
| `method` | set upload request method. | `string` | `'post'` | No |
| `multiple` | whether uploading multiple files is permitted. | `boolean` | `false` | No |
| `data` | additions options of request. | `Record<string, any>` | — | No |
| `name` | key name for uploaded file. | `string` | `'file'` | No |
| `with-credentials` | whether cookies are sent. | `boolean` | `false` | No |
| `show-file-list` | whether to show the uploaded file list. | `boolean` | `true` | No |
| `drag` | whether to activate drag and drop mode. | `boolean` | `false` | No |
| `accept` | accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true`. | `string` | — | No |
| `on-preview` | hook function when clicking the uploaded files. | `(uploadFile: UploadFile) => void` | — | No |
| `on-remove` | hook function when files are removed. | `(uploadFile: UploadFile, uploadFiles: UploadFiles) => void` | — | No |
| `on-success` | hook function when uploaded successfully. | `(response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void` | — | No |
| `on-error` | hook function when some errors occurs. | `(error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void` | — | No |
| `on-progress` | hook function when some progress occurs. | `(evt: UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void` | — | No |
| `on-change` | hook function when select file or upload file success or upload file fail. | `(uploadFile: UploadFile, uploadFiles: UploadFiles) => void` | — | No |
| `on-exceed` | hook function when limit is exceeded. | `(files: File[], uploadFiles: UploadFiles) => void` | — | No |
| `before-upload` | hook function before uploading with the file to be uploaded as its parameter. If `false` is returned or a `Promise` is returned and then is rejected, uploading will be aborted. | `(rawFile: UploadRawFile) => Awaitable<void \| undefined \| null \| boolean \| File \| Blob>` | — | No |
| `before-remove` | hook function before removing a file with the file and file list as its parameters. If `false` is returned or a `Promise` is returned and then is rejected, removing will be aborted. | `(uploadFile: UploadFile, uploadFiles: UploadFiles) => Awaitable<boolean>` | — | No |
| `file-list` / `v-model:file-list` | default uploaded files. | `UploadUserFile[]` | `[]` | No |
| `list-type` | type of file list. | `"text" \| "picture" \| "picture-card"` | `'text'` | No |
| `auto-upload` | whether to auto upload file. | `boolean` | `true` | No |
| `http-request` | override default xhr behavior, allowing you to implement your own upload-file's request. | (options: UploadRequestOptions) => XMLHttpRequest \| Promise\<unknown\> | — | No |
| `disabled` | whether to disable upload. | boolean | `false` | No |
| `limit` | maximum number of uploads allowed. | number | — | No |
### Slots
| Name | Description | Scope |
| --------- | ----------------------------------- | ---------------------- |
| `default` | customize default content. | - |
| `trigger` | content which triggers file dialog. | - |
| `tip` | content of tips. | - |
| `file` | content of thumbnail template. | `{ file: UploadFile }` |
### Exposes
| Name | Description | Type |
| -------------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------- |
| `abort` | cancel upload request. | `(file: UploadFile) => void` |
| `submit` | upload the file list manually. | `() => void` |
| `clearFiles` | clear the file list (this method is not supported in the `before-upload` hook). | `(status?: Array<"ready" \| "uploading" \| "success" \| "fail">) => void` |
| `handleStart` | select the file manually. | `(rawFile: UploadRawFile) => void` |
| `handleRemove` | remove the file manually. `file` and `rawFile` has been merged. `rawFile` will be removed in `v2.2.0`. | `(file: UploadFile \| UploadRawFile, rawFile?: UploadRawFile) => void` |