Skip to content
On this page

Upload 上传

基础用法

数据绑定一个数组默认需要有name size url分别是文件名,文件大小,文件地址。

注:返回数组会自动添加前缀为`_`字段,请不要使用`_`前缀的参数。
  • Sharon Garcia.jpg47.0 MB
  • Linda Davis.jpg17.8 MB
  • Scott Williams.jpg46.8 MB
  • Jose Davis.jpg37.3 MB
html
<script setup>
import { ref } from 'vue'
const files = ref([
  name: 'images 1.jpg', // 文件名称
  size: 5544985, // 字节数单位为byte
  url: '...', // 文件地址
  // ...
])
</script>
<os-upload v-model="files">
</os-upload>

多选文件

multiple属性设置为true,可开启多选数个文件进行选择。

  • Sharon Garcia.jpg47.0 MB
  • Linda Davis.jpg17.8 MB
  • Scott Williams.jpg46.8 MB
  • Jose Davis.jpg37.3 MB

限制大小

limit属性可设置上传文件数量,类型为数字类型,默认为0,则不限制文件数量,下例限制3个文件。

max-size属性可设置上传文件最大的容量大小,类型为数字类型单位为byte,默认为0,则不限制大小,下例限制1kb。

on-exceed函数在超出文件限制时会运行,返回json格式为{ error: errorType, errorFiles: uploadItem[] }, errorType目前只有limitmaxSize两种类型。

  • Sharon Garcia.jpg47.0 MB
  • Linda Davis.jpg17.8 MB
  • Scott Williams.jpg46.8 MB
  • Jose Davis.jpg37.3 MB

上传模式

mode属性能改变上传框样式与功能,目前支持button input drop,分别是按钮形式,输入框形式,拖拽形式,默认为按钮形式。

button

此模式只存在一个选择文件按钮,点击能触发选择文件功能。

input

此模式只存在一个输入框,点击能触发选择文件功能,不能手动填写,如设置隐藏列表选择文件后的名字会直接显示在输入框内。

Choose File

drop

drop模式能支持拖拽文件进行上传。

Drop file here or click to upload
html
<os-upload
mode="drop">
</os-upload>

隐藏列表

show-list设置为false,能隐藏文件列表内容,此设置建议设置mode为input,能显示选择文件名称。

Choose File
html
<os-upload 
v-model="file" 
mode="input" 
:show-list="false">
</os-upload>

照片墙

list-type能设置列表样式text images-card,分别为文字,照片墙,默认为文字。

注:照片墙开启后,mode只有设置支持drop有效。

是/否已上传

有些特殊情况下需要区分文件是否已上传保存到订单里,一般地可通过绑定字段url与插槽item进行区别,如下例,双向绑定的数据url是存在值,意味着是已上传,可尝试添加个本地文件。

  • Sharon Garcia.jpg
  • Linda Davis.jpg
  • Scott Williams.jpg
  • Jose Davis.jpg

文件操作

change事件监听着数据如果有发生变化,添加/删除均会运行。

on-add函数能绑定一个方法选择完文件后会触发,方法直接返回BooleanPromise函数resolve(Boolean),如返回值为false则会添加文件失败。

on-delete函数能绑定一个方法点击删除事件时会触发,方法直接返回BooleanPromise函数resolve(Boolean),如返回值为false则会删除失败。

on-exceed函数在超出文件限制时会运行。

  • Sharon Garcia.jpg47.0 MB
  • Linda Davis.jpg17.8 MB
  • Scott Williams.jpg46.8 MB
  • Jose Davis.jpg37.3 MB
html
<os-upload 
v-model="files" 
@change="(items) => { }"
:on-delete="() => {return false}"
:on-add="() => {return false}"
:on-exceed="(addFiles, nowFiles) => {}">
</os-upload>

插槽

名称描述类型
items列表loop循环的内容,方便自定义列表样式{items: uploadItem[]}
item对应的每个列表内空记录{items: uploadItem[], item: uploadItem}
other-button可放置其他按钮modo为drop与照片墙时不可用
tip位于上传触发对象正面的提示文字
drop-tip是mode="drop"时显示的提示文字

Released under the MIT License.