# Uploader 上传 ## 示例 ### 文件上传 设置 [`type`](#props-type) 的值为 `file` 进入文件上传模式。 [[ demo src="/demo/uploader/file.vue" ]] ### 图片上传 设置 [`type`](#props-type) 的值为 `image` 进入图片上传模式。 [[ demo src="/demo/uploader/image.vue" ]] ### 媒体上传 设置 [`type`](#props-type) 的值为 `media` 进入媒体上传模式。 [[ demo src="/demo/uploader/media.vue" ]] ### 前端校验 图片格式、大小、数量校验以及使用 [`validator`](#props-validator) 自定义校验。 [[ demo src="/demo/uploader/validate.vue" ]] ### 自定义配置 使用 [`upload`](#props-upload) 自定义上传过程,使用 [`controls`](#props-controls) 配置浮层操作项。 [[ demo src="/demo/uploader/custom.vue" ]] ### 拖拽排序 设置 [`sortable`](#props-sortable) 属性来指定上传项目之间可以拖拽排序。 [[ demo src="/demo/uploader/sortable.vue" ]] ### 已上传项自定义操作 设置 [`controls`](#props-controls) 属性来指定悬浮到每个上传项时的操作选项。 [[ demo src="/demo/uploader/controls.vue" ]] ### 上传入口自定义操作 设置 [`entries`](#props-entries) 属性来指定悬浮到继续上传项目时的操作选项。 [[ demo src="/demo/uploader/entries.vue" ]] ## API ### 属性 | 属性 | 类型 | 默认值 | 描述 | | --- | --- | --- | --- | | ``ui`` | `string=` | - | [^ui] | | ``type`` | `string` | `'file'` | [^type] | | ``value`` | `Object | Array` | - | [^value] | | ``key-field`` | `string` | `'key'` | 用于指定文件对象的唯一 key,作为数据变化时正确处理文件列表顺序的依据。 | | ``name`` | `string` | `'file'` | 原生 `` 元素的 `name`。 | | ``action`` | `string` | - | 上传地址。 | | ``headers`` | `Object` | `uploader.headers` | 需要加入 [HTTP 请求头](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers) 的内容。可进行[全局统一配置](#configs-uploader-headers)。 | | ``with-credentials`` | `boolean` | `true` | 同 `XMLHttpRequest` 的 [`withCredentials`](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials) 属性。 | | ``request-mode`` | `string` | `uploader.requestMode` | [^request-mode] | | ``iframe-mode`` | `string` | `uploader.iframeMode` | [^iframe-mode] | | ``callback-namespace`` | `string` | `uploader.callbackNamespace` | 在 `request-mode` 的值为 `'iframe'` 并且 `iframe-mode` 的值为 `'callback'` 的模式下,指定回调函数的命名空间,放在 `window` 对象下。可进行[全局统一配置](#configs-uploader-callbackNamespace)。 | | ``data-type``| `string` | `'json'` | [^data-type] | | ``convert-response`` | `uploader.convertResponse` | - | [^convert-response] | | ``accept`` | `string` | - | 与原生 `` 元素 的 [`accept`](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#%E9%99%90%E5%88%B6%E5%8F%AF%E6%8E%A5%E5%8F%97%E7%9A%84%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B) 属性相同,在浏览器的文件类型筛选后再加一层校验。对于类似 `application/msword` 这样的 MIME type 与扩展名对不上的情形跳过校验。 | | ``max-count`` | `number` | - | 最大文件数量。 | | ``max-size`` | `number | string` | - | 单个文件的最大大小,如果是 `number`,单位是 `byte`;如果是 `string`,支持在数字后面添加单位,单位可以是 `b` / `kb` / `mb` / `gb` / `tb`。 | | ``validator`` | `function(Object): Object | Promise` | - | [^validator] | | ``payload`` | `Object` | - | 附带在上传请求中的额外参数。 | | ``autoupload`` | `boolean` | `true` | 指定是否在选完文件后立刻上传。 | | ``order`` | `string` | `'asc'` | [^order] | | ``picker-position`` | `string` | `'after'` | [^picker-position] | | ``upload`` | `function(Object, Object): function` | - | [^upload] | | ``controls`` | `function(Object, Array): Array` | - | [^controls] | | ``multiple`` | `boolean` | `false` | 上传多个文件,当 `max-count` 是 `1`,`multiple` 是 `true`,那么 `value` 也是数组。 | | ``entries`` | `function(Array): Array` | - | [^entries] | | ``after-pick`` | `function(Array): void` | - | 选择文件之后的回调。 | | ``sortable`` | `boolean` | `false` | 文件列表是否可以排序。 | | ``preview-options`` | `object` | `{wrap: true, indicator: 'number'}` | 传递给 [`Lightbox`](./lightbox) 的预览选项。 | ^^^ui 预设样式。 +++枚举值 | 值 | 描述 | | -- | -- | | `s` | 小尺寸样式。 | | `m` | 中尺寸样式。 | +++ ^^^ ^^^type 上传类型。 +++枚举值 | 值 | 描述 | | -- | -- | | `file` | 文件上传。 | | `image` | 图片上传。 | | `media` | 媒体上传(支持视频和图片)。 | | `video` | 视频上传。 | +++ ^^^ ^^^value 当 `multiple` 为 `true`,返回文件对象的数组。另外,当 `max-count` 被设置为大于 `1` 的值,则会视为开启了 `multiple`。 每个文件对象的类型为 `{name: string, src: string, ...}`,以及在 `convert-response` 中自定义添加的字段。 ^^^ ^^^request-mode 指定异步上传方式。可进行[全局统一配置](#configs-uploader-request-mode)。 +++枚举值 | 值 | 描述 | | -- | -- | | `xhr` | 通过 `XMLHttpRequest` 上传。 | | `iframe` | 通过 `