Skip to content

c-upload 上传组件

c-upload 是基于 uView 的 u-upload 组件的封装,用于图片和视频上传,支持预览、裁剪等功能。

基础用法

vue
<template>
  <c-upload
    :fileList="fileList"
    @afterRead="afterRead"
    @delete="deletePic"
    name="1"
    multiple
    :maxCount="10"
  ></c-upload>
</template>

<script>
export default {
  data() {
    return {
      fileList: []
    }
  },
  methods: {
    // 删除图片
    deletePic(event) {
      this[`fileList${event.name}`].splice(event.index, 1)
    },
    // 新增图片
    async afterRead(event) {
      // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
      let lists = [].concat(event.file)
      let fileListLen = this[`fileList${event.name}`].length
      lists.map((item) => {
        this[`fileList${event.name}`].push({
          ...item,
          status: 'uploading',
          message: '上传中'
        })
      })
      for (let i = 0; i < lists.length; i++) {
        const result = await this.uploadFilePromise(lists[i].url)
        let item = this[`fileList${event.name}`][fileListLen]
        this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
          status: 'success',
          message: '',
          url: result
        }))
        fileListLen++
      }
    },
    uploadFilePromise(url) {
      return new Promise((resolve, reject) => {
        let a = uni.uploadFile({
          url: 'http://192.168.2.21:7001/upload', // 仅为示例,非真实的接口地址
          filePath: url,
          name: 'file',
          formData: {
            user: 'test'
          },
          success: (res) => {
            setTimeout(() => {
              resolve(res.data.data)
            }, 1000)
          }
        })
      })
    }
  }
}
</script>

Props

参数说明类型默认值
accept接受的文件类型 (all/media/image/file/video)String'image'
capture图片或视频拾取模式String/Array['album', 'camera']
compressed是否压缩视频 (accept=video时生效)Booleantrue
camera摄像头 (accept=video时生效, back/front)String'back'
maxDuration视频最长拍摄时间(秒)Number60
uploadIcon上传区域图标String'camera-fill'
uploadIconColor上传区域图标颜色String'#D3D4D6'
useBeforeRead是否开启文件读取前事件Booleanfalse
afterRead读取后的处理函数Functionnull
beforeRead读取前的处理函数Functionnull
previewFullImage是否显示自带的图片预览功能Booleantrue
maxCount最大上传数量String/Number52
disabled是否禁用Booleanfalse
imageMode预览图片裁剪模式String'aspectFill'
name标识符,回调中获取String''
sizeType图片尺寸 (original/compressed)Array['original', 'compressed']
multiple是否开启多选Booleanfalse
deletable是否展示删除按钮Booleantrue
maxSize文件大小限制(byte)String/NumberNumber.MAX_VALUE
fileList已上传的文件列表Array[]

Events

事件名说明回调参数
afterRead读取后的处理函数event
beforeRead读取前的处理函数event
oversize文件超出大小限制event
clickPreview点击预览图片event
delete删除图片event