更新记录

1.0.0(2022-03-07)

上传地址和token请自行更改为自己的地址信息,首次提交。有问题随时反馈!


平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
app-vue × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × ×

自行下载插件,使用自己i项目的地址和token进行测试!!!

该组件为视频和图片上传为一体的上传组件,解决视频上传后,无法显示视频第一帧问题,和视频组件层级问题

属性参数

属性名 类型 默认值 说明
value Array [] 数据格式为:[ 图片地址,图片地址 ] 受控图片列表
max Number 6 展示图片最大值
chooseNum Number 6 选择图片数
name String file 发到后台的文件参数名
remove Boolean true 是否展示删除按钮
add Boolean true 是否展示添加按钮
disabled Boolean false 是否禁用
action String '' 上传地址
sourceType Array ['album', 'camera'] 选择照片来源 【ps:H5就别费劲了,设置了也没用。不是我说的,官方文档就这样!!!】
compress Boolean true 是否需要压缩
quality Number 80 压缩质量,范围0~100
headers Object {} 上传的请求头部
formData Object {} HTTP 请求中其他额外的 form data
uploadSuccess (res) =>{success:false,url:''} {success:false,url:''} 解析上传返回信息 返回展示路径{success:true,url:'解析的路径'},若失败或解析出问题返回success:false,此属性和事件里面的uploadSuccess为两种方式,选择一种即可
mediaType String image 文件类型 image/video/all
maxDuration Number 60 拍摄视频最长拍摄时间,单位秒。最长支持 60 秒。 (只针对拍摄视频有用) APP平台 1.9.7+(iOS支持,Android取决于ROM的拍照组件是否实现此功能,如果没实现此功能则忽略此属性。) 微信小程序、百度小程序
camera String back 镜头方向 'front'、'back',默认'back'(只针对拍摄视频有用)

事件

事件名称 说明 回调参数
uploadSuccess 上传成功事件 Function(res) fileType 文件类型 0: 图片 1:视频
uploadFail 上传失败事件 Function(err)
chooseSuccess 选择图片后触发(当不配置action参数时,触发此事件) Function(tempFilePaths,type) tempFilePaths文件路径 type 0:图片 1:视频
imgDelete 删除图片后触发【del:返回删除的图片路径,tempFilePaths:返回删除之后的图片数组】 Function({del:del,tempFilePaths:tempFilePaths})

demo

<template>
  <view class="content">
    <xfx-image-upload
      :max="6"
      :chooseNum="6"
      v-model="mobileData"
      @uploadSuccess="ceshiUploadSuccess"
      @chooseSuccess="chooseMobile"
      @uploadFail="errorUpload"
      @imgDelete="delMobile"
      mediaType="all"
      :action="urlConfig"
    ></xfx-image-upload>
  </view>
</template>
<style>
</style>
<script>
import xfxImageUpload from "@/components/xfx-image-upload/xfx-image-upload.vue";
export default {
  data() {
    return {
      urlConfig: "", //上传的地址,
      mobileData: [], //上传成功的数组
    };
  },
  components: { xfxImageUpload },
  onLoad() {},
  methods: {
      //上传成功
    ceshiUploadSuccess(res) {
      console.log(res);
      /****************
      因为上传接口返回的结构不一致,所以以下代码需要根据实际的接口返回结构开发,在此只是展示如果给数组里添加的过程,仅供参考
        ***************/
      var _res = JSON.parse(res.data);
      if (_res.code == 200) {
        this.mobileData.push(_res.message);
      }
    },
    // 未配置地址
    chooseMobile(res) {
      console.log(res);
    },
    //删除
    delMobile(del, tempFilePaths) {
      this.mobileData = del.tempFilePaths;
      console.log(this.mobileData);
    },
    // 上传失败
    errorUpload(res) {},
  },
};
</script>

<style>
.content {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
</style>

备注

  1. 目前当文件大于1MB时进行压缩,如果需要调整,大家就手动改代码吧~
  2. 关于上传完成回显的问题,因为上传返回的结构都不一致,所以这部分代码需要开发者自己完成,只要将获取到的地址,添加到组件绑定的数组对象里即可
  3. 上传成功的图片或视频,均可进行播放或放大查看

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问