Vue上传组件vue Simple Uploader的用法示例


Posted in Javascript onAugust 25, 2017

在日常开发中经常会遇到文件上传的需求,vue-simple-uploader 就是一个基于 simple-uploader.js 和 Vue 结合做的一个上传组件,自带 UI,可覆盖、自定义;先来张动图看看效果:

Vue上传组件vue Simple Uploader的用法示例

其主要特点就是:

  • 支持文件、多文件、文件夹上传
  • 支持拖拽文件、文件夹上传
  • 统一对待文件和文件夹,方便操作管理
  • 可暂停、继续上传
  • 错误处理
  • 支持“快传”,通过文件判断服务端是否已存在从而实现“快传”
  • 上传队列管理,支持最大并发上传
  • 分块上传
  • 支持进度、预估剩余时间、出错自动重试、重传等操作

安装

通过npm安装:npm install vue-simple-uploader --save即可。

使用

初始化

import Vue from 'vue'
import uploader from 'vue-simple-uploader'
import App from './App.vue'

Vue.use(uploader)

/* eslint-disable no-new */
new Vue({
 render(createElement) {
  return createElement(App)
 }
}).$mount('#app')

App.vue

<template>
 <uploader :options="options" class="uploader-example">
  <uploader-unsupport></uploader-unsupport>
  <uploader-drop>
   <p>Drop files here to upload or</p>
   <uploader-btn>select files</uploader-btn>
   <uploader-btn :attrs="attrs">select images</uploader-btn>
   <uploader-btn :directory="true">select folder</uploader-btn>
  </uploader-drop>
  <uploader-list></uploader-list>
 </uploader>
</template>

<script>
 export default {
  data () {
   return {
    options: {
     // 可通过 https://github.com/simple-uploader/Uploader/tree/develop/samples/Node.js 示例启动服务
     target: '//localhost:3000/upload',
     testChunks: false
    },
    attrs: {
     accept: 'image/*'
    }
   }
  }
 }
</script>

<style>
 .uploader-example {
  width: 880px;
  padding: 15px;
  margin: 40px auto 0;
  font-size: 12px;
  box-shadow: 0 0 10px rgba(0, 0, 0, .4);
 }
 .uploader-example .uploader-btn {
  margin-right: 4px;
 }
 .uploader-example .uploader-list {
  max-height: 440px;
  overflow: auto;
  overflow-x: hidden;
  overflow-y: auto;
 }
</style>

组件

Uploader

上传根组件,可理解为一个上传器。

Props

options {Object}

参考 simple-uploader.js 配置。

autoStart {Boolean}

默认 true, 是否选择文件后自动开始上传。

事件

  • upload-start 开始上传。
  • file-added(file) 添加了一个文件,一般用作文件校验,如果给 file 增加 ignored 属性为 true 的话就会被过滤掉。
  • file-removed(file) 移除一个文件(文件夹)。
  • files-submitted(files, fileList) 所选择的文件们添加到上传队列后触发。

作用域插槽

  • files {Array}纯文件列表,没有文件夹概念。
  • fileList {Array}统一对待文件、文件夹列表。
  • started是否开始上传了。

UploaderBtn

点选上传文件按钮。

Props

directory {Boolean}

默认 false, 是否是文件夹上传。

single {Boolean}

默认 false, 如果设为 true,则代表一次只能选择一个文件。

attrs {Object}

默认 {}, 添加到 input 元素上的额外属性。

UploaderDrop

拖拽上传区域。

UploaderList

文件、文件夹列表,同等对待。

作用域插槽

fileList {Array}

文件、文件夹组成数组。

UploaderUnsupport

不支持 HTML5 File API 的时候会显示。

UploaderFiles

文件列表,没有文件夹概念,纯文件列表。

Props

file {Uploader.File}

封装的文件实例。

list {Boolean}

如果是在 UploaderList 组件中使用的话,请设置为 true。

作用域插槽

  • file {Uploader.File}文件实例。
  • list {Boolean}是否在 UploaderList 组件中使用。
  • status {String}当前状态,可能是:success, error, uploading, paused, waiting
  • name {String}文件名字。
  • paused {Boolean}是否暂停了。
  • error {Boolean}是否出错了。
  • averageSpeed {Number}平均上传速度,单位字节每秒。
  • formatedAverageSpeed {String}格式化后的平均上传速度,类似:3 KB / S。
  • currentSpeed {Number}当前上传速度,单位字节每秒。
  • isComplete {Boolean}是否已经上传完成。
  • isUploading {Boolean}是否在上传中。
  • size {Number}文件或者文件夹大小。
  • formatedSize {Number}格式化后文件或者文件夹大小,类似:10 KB.
  • uploadedSize {Number}已经上传大小,单位字节。
  • progress {Number}介于 0 到 1 之间的小数,上传进度。
  • progressStyle {String}进度样式,transform 属性,类似:{transform: '-50%'}.
  • progressingClass {String}正在上传中的时候值为:uploader-file-progressing。
  • timeRemaining {Number}预估剩余时间,单位秒。
  • formatedTimeRemaining {String}格式化后剩余时间,类似:3 miniutes.
  • type {String}文件类型。
  • extension {String}文件名后缀,小写。
  • fileCategory {String}文件分类,其中之一:folder, document, video, audio, image, unknown。

项目

地址:https://github.com/simple-uploader/vue-uploader。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
起点页面传值js,有空研究学习下
Jan 25 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
Dec 12 Javascript
利用javascript打开模态对话框(示例代码)
Jan 11 Javascript
Javascript 读取操作Sql中的Xml字段
Oct 09 Javascript
js右下角弹出提示框示例代码
Jan 12 Javascript
jQuery中的Deferred和promise 的区别
Apr 03 Javascript
基于jquery实现即时检查格式是否正确的表单
May 06 Javascript
jquery easyui DataGrid简单示例
Jan 23 Javascript
node.js爬虫爬取拉勾网职位信息
Mar 14 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
Dec 22 Javascript
微信小程序录音与播放录音功能
Dec 25 Javascript
JS FormData对象使用方法实例详解
Feb 12 Javascript
DVA框架统一处理所有页面的loading状态
Aug 25 #Javascript
基于JavaScript实现评论框展开和隐藏功能
Aug 25 #Javascript
js求数组中全部数字可拼接出的最大整数示例代码
Aug 25 #Javascript
Vue.js进行查询操作的实例详解
Aug 25 #Javascript
Vue实例中生命周期created和mounted的区别详解
Aug 25 #Javascript
Vue.js框架路由使用方法实例详解
Aug 25 #Javascript
关于Vue.nextTick()的正确使用方法浅析
Aug 25 #Javascript
You might like
ftp类(myftp.php)
2006/10/09 PHP
php下过滤HTML代码的函数
2007/12/10 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
Jquery遍历节点的方法小集
2014/01/22 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
ng-zorro-antd 入门初体验
2018/12/03 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
2019/09/11 Javascript
python搭建简易服务器分析与实现
2012/12/15 Python
python如何实现反向迭代
2018/03/20 Python
基于python判断目录或者文件代码实例
2019/11/29 Python
基于python3实现倒叙字符串
2020/02/18 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
Python+Appium实现自动化测试的使用步骤
2020/03/24 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
医学生实习自荐信
2013/10/01 职场文书
交通法规咨询中心工作职责
2013/11/27 职场文书
销售会计工作职责
2013/12/02 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
保护母亲河倡议书
2014/04/14 职场文书
雷峰塔导游词
2015/02/09 职场文书
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB