特性

  • 多文件上传
  • 上传图片预览
  • 上传状态监测
  • 删除指定图片
  • 清空图片
  • 重新上传

安装

npm i vue-easy-uploader --save

使用

在入口文件main.js中加入以下代码:

import Vue from 'vue'
import Vuex from 'vuex'
import uploader from 'vue-easy-uploader'
 
let store = new Vuex.Store({})
Vue.use(uploader, store)

插件内部设置了状态管理,因此需要vuex的支持。

在Vue组件中使用

<uploader
    url="http://..."
></uploader>

参数说明

url: 上传接口路径

需要与后端约定上传格式,使用表单提交方式,后端需获取input[type='file']name属性,默认为name="imgFiles[0]"name="imgFiles[1]" ...数组序号从0递增。

上传成功时返回的数据如下:

示例代码

<template>
  <div>
    <uploader
      url="http://..."
    ></uploader>
    <div class="btn" @click="upload">
      上传
    </div>
  </div>
</template>
 
<script>
import { mapState } from 'vuex'
export default {
  data () {
    return {
      imgs: []
    }
  },
  computed: {
    ...mapState({
      imgStatus: state => state.imgstore.img_status,
      imgPaths: state => state.imgstore.img_paths
    })
  },
  methods: {
    upload () {
      this.$store.commit('set_img_status', 'uploading')
    },
    submit () {
      let values = []
      for (let key of this.imgPaths) {
        values.push(key)
      }
      this.imgs = values
      console.log(this.imgs)
    }
  },
  watch: {
    imgStatus () {
      if (this.imgStatus === 'finished') {
        this.submit()
      }
    }
  },
  destoryed () {
    this.imgs = []
  }
}
</script>
 
<style scoped lang="less">
.btn {
  width: 100%;
  height: 3em;
  background-color: green;
  color: #fff;
  display: flex;
  justify-content: center;
  align-items: center;
}
</style>

状态管理

状态管理存储在state.imgstore中,包括:

state.imgstore.img_upload_cache # 上传文件缓存
state.imgstore.img_status # 上传状态,包括 ready selected uploading finished
state.imgstore.img_paths # 上传后的路径反馈数组(数据结构为Set集合)

img_status

整个上传过程都通过img_status判断,包括以下几个状态:

ready # 上传开始前的准备状态 
selected # 已选择上传文件 
uploading # 开始上传 
finished # 上传完毕 

开始上传

this.$store.commit('set_img_status', 'uploading')

只需要改变状态管理中的img_statusuploading即可。

上传完成

methods: {
  submit () {
    // some code
  }
}
computed: {
  ...mapState({
    imgStatus: state => state.imgstore.img_status
  })
},
watch: {
  imgStatus () {
    if (this.imgStatus === 'finished') {
      this.submit()
    }
  }
}

监视state.imgstore.img_status,当状态变为finished时,执行文件上传完成后的回调。

感谢分享  https://www.npmjs.com/package/vue-easy-uploader#%E7%89%B9%E6%80%A7

一个基于Vue的移动端多文件上传插件,支持常见图片的上传。相关推荐

  1. vue手机端项目php,MintUI基于Vue.js移动端组件库详解

    Mint UI 包含丰富的 CSS 和 JS 组件,能够满足日常的移动端开发需要.接下来通过本文给大家分享Mint UI 基于 Vue.js 移动端组件库,需要的朋友参考下吧,希望能帮助到大家. 官网 ...

  2. html5快速开发模板生成器,推荐一个基于Vue 的 H5 快速开发模板

    本项目以基于 vue-cli4 和 Vant-ui 搭建的,进行移动端开发中的一些最佳实践方案 模板地址 动动你的小手点颗star 样式适配 在移动端网页开发时,样式适配始终是一个绕不开的问题.对此目 ...

  3. 使用webpack4搭建一个基于Vue的组件库

    组内负责的几个项目都有一些一样的公共组件,所以就着手搭建了个公共组件开发脚手架,第一次开发 library,所以是参考着 iview 的配置来搭建的.记录如何使用webpack4搭建一个library ...

  4. 实现一个基于Vue的Button小组件

    概述 原生HTML的button只能保证功能存在,样式都不怎么好看.当然也可以通过编写css样式来改变原生HTML中的button显示,但是现在各个UI框架都很流行,也很方便,很多时候都是直接引入框架 ...

  5. 如何开发一个基于 Vue 的 ui 组件库

    如何开发一个基于 Vue 的 ui 组件库 开发模式 预览 demo 在开发一个 ui 组件库时,肯定需要一边预览 demo,一边修改代码. 常见的解决方案是像开发一般项目一样使用 webpack-d ...

  6. html原生上传,一个基于HTML5及原生JS的文件上传组件--JohnUploader

    运行效果图 一.组件介绍 基本特点 基于HTML5的FileReader和FormData 可以完成多文件选择,并预览 完成文件的异步上传 原生XHR对象,适配多浏览器 代码 class JohnUp ...

  7. 一个基于vue和element-ui的树形穿梭框组件

    el-tree-transfer 简介 因为公司业务使用vue框架,ui库使用的element-ui.在市面上找到一个好用的vue树形穿梭框组件都很难,又不想仅仅因为一个穿梭框在element-ui之 ...

  8. vue img src 动态赋值_一个基于Vue的开源延迟加载插件——vuelazyload

    介绍 vue-lazyload是一个基于Vue的延迟加载插件,用于延迟加载Vue组件或者图像. Github https://github.com/hilongjw/vue-lazyload 特点 轻 ...

  9. 【我的ASM学习进阶之旅】 介绍一个基于gradle transform api和ASM的字节码插件平台ByteX

    原文链接: https://github.com/bytedance/ByteX/blob/master/README_zh.md 文章目录 ByteX(Infinite Possibilities) ...

最新文章

  1. python投掷骰子实验_Python小程序--模拟掷骰子
  2. python入门练习题-Python简单新手入门练习题
  3. 【总结】有三AI秋季划模型优化组3月直播讲了哪些内容,为什么每一个从事深度学习的同学都应该掌握模型优化的内容...
  4. 横竖三个数的和相等_怎样证明 0.999… = 1?数值上是相等的,那么两者的区别是什么?...
  5. Eclipse调试Logcat类的说明
  6. java线性表源代码_线性表java实现之顺序存储源码
  7. JSP中contentType和pageEncoding的区别
  8. 数学连乘和累加运算符号_期中复习:小学数学各年级知识点和重点、难点大全!...
  9. python获取当前路径
  10. IB中文阅读书单推荐
  11. 【小牛分享】人员组织架构图 - 为纪念2013即将结束而分享
  12. Oracle设计题资料分析题
  13. 同时买票是怎么实现的_候补购票和抢票有什么不同 候补购票和抢票可以同时进行吗...
  14. 怎么用matlab保存音频文件,Matlab用图片和音频藏文件(续)
  15. MATLAB 2016a系统错误解决方案
  16. 如何下载Android Market上未对中国开放的应用
  17. 为什么要说“链上KYC”是Web3.0失败的前奏
  18. 基于视频流传输 — 在线教育白板技术
  19. 学习笔记5:mysql高可用(主从复制监控)
  20. 百度 腾讯 阿里 小米 笔试题目宝典

热门文章

  1. gradle配置国内阿里源
  2. 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:
  3. 服务器芯片如何开启睿频,服务器器主板打开睿频
  4. PLS回归 (OLS)最小二乘法 PCA) 偏最小二乘法 (PLS) SIMPLS算法 20200723
  5. chrome插件开发(manifest_version版本V3 + Ant Design Vue)
  6. 指令系统相兼容的计算机称为系列机,计算机组成与体系结构.ppt
  7. JanusGraph服务器
  8. 解决ORA-01033: ORACLE initialization or shutdown in progress
  9. STM32CubeMX——循迹传感器TCRT5000的使用
  10. 如何简单地理解泊松分布