uniapp中uview组件库的丰富Upload 上传上午用法

简介: uniapp中uview组件库的丰富Upload 上传上午用法



基础用法

  • 可以通过设置fileList参数(数组,元素为对象),显示预置的图片。其中元素的url属性为图片路径
<template>
  <u-upload
    :fileList="fileList1"
    @afterRead="afterRead"
    @delete="deletePic"
    name="1"
    multiple
    :maxCount="10"
  ></u-upload>
</template>
<script>
  export default {
    data() {
      return {
        fileList1: [],
      }
    },
    methods:{
      // 删除图片
      deletePic(event) {
        this[`fileList${event.name}`].splice(event.index, 1)
      },
      // 新增图片
      async afterRead(event) {
        // 当设置 multiple 为 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>

#上传视频

  • 通过设置accept='video'属性,将上传改为视频上传。
<u-upload
  :fileList="fileList2"
  @afterRead="afterRead"
  @delete="deletePic"
  name="2"
  multiple
  :maxCount="10"
  accept="video"
></u-upload>
<!-- data 方法请参考 基本用法 -->
data(){
  return{
    fileList2: [],
  }
}

#文件预览

  • 通过设置:previewFullImage="true"'属性,达到文件预览的目的。
<u-upload
  :fileList="fileList3"
  @afterRead="afterRead"
  @delete="deletePic"
  name="3"
  multiple
  :maxCount="10"
  :previewFullImage="true"
></u-upload>
<!-- data 方法请参考 基本用法 -->
data(){
  return{
    fileList3: [{
      url: 'https://cdn.uviewui.com/uview/swiper/1.jpg',
    }],
  }
}

#隐藏上传按钮

  • 上传数量等于maxCount所规定的数据时,隐藏上传按钮。
<u-upload
  :fileList="fileList4"
  @afterRead="afterRead"
  @delete="deletePic"
  name="4"
  multiple
  :maxCount="2"
></u-upload>
<!-- data 方法请参考 基本用法 -->
data(){
  return{
    fileList4: [{
        url: 'https://cdn.uviewui.com/uview/swiper/1.jpg',
      },
      {
        url: 'https://cdn.uviewui.com/uview/swiper/1.jpg',
      }
    ],
  }
}

#限制上传数量

  • 同上,规定maxCount的数据时。
<u-upload
  :fileList="fileList5"
  @afterRead="afterRead"
  @delete="deletePic"
  name="5"
  multiple
  :maxCount="3"
></u-upload>
<!-- data 方法请参考 基本用法 -->
data(){
  return{
    fileList5: [],
  }
}

#自定义上传样式

  • 添加image以自定义上传样式,达到身份证,银行卡等不同场景需求。
<u-upload
  :fileList="fileList6"
  @afterRead="afterRead"
  @delete="deletePic"
  name="6"
  multiple
  :maxCount="1"
  width="250"
  height="150"
>
  <image src="https://cdn.uviewui.com/uview/demo/upload/positive.png" 
  mode="widthFix" style="width: 250px;height: 150px;"></image>
</u-upload>
<!-- data 方法请参考 基本用法 -->
data(){
  return{
    fileList6: [],
  }
}

API

#Props

参数 说明 类型 默认值 可选值
accept 接受的文件类型,file只支持H5(只有微信小程序才支持把accept配置为all、media) String image all | media | image | file | video
capture 图片或视频拾取模式,当accept为image类型时设置capture可选额外camera可以直接调起摄像头 String | Array ['album', 'camera'] -
compressed 当accept为video时生效,是否压缩视频,默认为true Boolean true false
camera 当accept为video时生效,可选值为back或front String back -
maxDuration 当accept为video时生效,拍摄视频最长拍摄时间,单位秒 Number 60 true
uploadIcon 上传区域的图标,只能内置图标 String camera-fill -
uploadIconColor 上传区域的图标的颜色 String #D3D4D6 -
useBeforeRead 是否启用(显示/隐藏)组件 Boolean false true
previewFullImage previewFullImage Boolean true false
maxCount 最大选择图片的数量 String | Number 52 -
disabled 是否启用(显示/隐藏)组件 Boolean false true
imageMode 预览上传的图片时的裁剪模式,和image组件mode属性一致 String aspectFill -
name 标识符,可以在回调函数的第二项参数中获取 String file -
sizeType original 原图,compressed 压缩图,默认二者都有,H5无效 Array<String> ['original', 'compressed'] -
multiple 是否开启图片多选,部分安卓机型不支持 Boolean false true
deletable 是否显示删除图片的按钮 Boolean true false
maxSize 选择单个文件的最大大小,单位B(byte),默认不限制 String | Number Number.MAX_VALUE -
fileList 显示已上传的文件列表 Array - -
uploadText 上传区域的提示文字 String - -
width 内部预览图片区域和选择图片按钮的区域宽度,单位rpx,不能是百分比,或者auto String | Number 80 -
height 内部预览图片区域和选择图片按钮的区域高度,单位rpx,不能是百分比,或者auto String | Number 80 -
previewImage 是否在上传完成后展示预览图 Boolean true false

#Methods

此方法如要通过ref手动调用

名称 说明
afterRead 读取后的处理函数
beforeRead 读取前的处理函数

#Slot

slot中您可以内置任何您所需要的样式。

名称 说明
-(default) 自定义上传样式

#Events

回调参数中的event参数,为当前删除元素的所有信息,index为当前操作的图片的索引,name为删除名称,file包含删除的url信息

事件名 说明 回调参数
afterRead 读取后的处理函数 (file, lists, name),错误信息
beforeRead 读取前的处理函数 (file, lists, name),错误信息
oversize 图片大小超出最大允许大小 (file, lists, name), name为通过props传递的index参数
clickPreview 全屏预览图片时触发 (url, lists, name),url为当前选中的图片地址,index为通过props传递的index参数
delete 删除图片 传递index 回调 event 参数 包含index,file,name
相关文章
|
1月前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
37 0
在线课堂+工具组件小程序uniapp移动端源码
|
2月前
|
数据挖掘
uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件
uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件
154 10
|
2月前
|
搜索推荐 JavaScript 数据可视化
uniapp/vue个性化单选、复选组件
uniapp/vue个性化单选、复选组件
130 5
|
2月前
|
数据可视化 大数据 API
低代码可视化开发-uniapp新闻跑马灯组件-代码生成器
低代码可视化开发-uniapp新闻跑马灯组件-代码生成器
139 2
|
2月前
|
存储 API 数据库
uniapp APP自动更新组件
uniapp APP自动更新组件
93 1
|
2月前
|
移动开发 编解码 数据可视化
低代码可视化-uniapp SliderRange区间组件-代码生成器
SliderRange区间组件是一种用户界面元素,允许用户通过拖动滑块选择数值范围。组件支持微信小程序、H5和App,具有高度可定制性、响应式设计和多种事件处理功能。适用于价格筛选、音量调节等场景。代码实现包括滑动区域、滑块、事件处理等部分,支持可视化配置步长、颜色等属性。使用时需注意选择合适步长、提供清晰标签和考虑无障碍设计。
46 0
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的房屋租赁App的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的房屋租赁App的详细设计和实现(源码+lw+部署文档+讲解等)
137 7
基于SpringBoot+Vue+uniapp的房屋租赁App的详细设计和实现(源码+lw+部署文档+讲解等)
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的汉服交易小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的汉服交易小程序的详细设计和实现(源码+lw+部署文档+讲解等)
77 7
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的宠物医院微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的宠物医院微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
91 7
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的武汉市公交路线查询系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的武汉市公交路线查询系统的详细设计和实现(源码+lw+部署文档+讲解等)
127 7