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动态设置div的值下例子
Oct 29 Javascript
jquery设置按钮停顿3秒不可用
Mar 07 Javascript
jQuery中animate()方法用法实例
Dec 24 Javascript
js实现商城星星评分的效果
Dec 29 Javascript
Vue.js Ajax动态参数与列表显示实现方法
Oct 20 Javascript
js canvas实现放大镜查看图片功能
Jun 08 Javascript
原生js 封装get ,post, delete 请求的实例
Aug 11 Javascript
JS点击动态添加标签、删除指定标签的代码
Apr 18 Javascript
JS获取指定月份的天数两种实现方法
Jun 22 Javascript
JS内部事件机制之单线程原理
Jul 02 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
Jan 08 Javascript
Vue解析带html标签的字符串为dom的实例
Nov 13 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
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
2014/06/12 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
php实现的双色球算法示例
2017/06/20 PHP
js 表格隔行颜色
2009/12/02 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
浅谈React碰到v-if
2018/11/04 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
Python中使用bidict模块双向字典结构的奇技淫巧
2016/07/12 Python
Python常见异常分类与处理方法
2017/06/04 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
详解python while 函数及while和for的区别
2018/09/07 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
2018/10/26 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
python如何通过twisted搭建socket服务
2020/02/03 Python
如何进行Linux分区优化
2013/02/12 面试题
统计岗位职责
2014/02/21 职场文书
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
2014年人事部工作总结
2014/12/03 职场文书
新课程改革心得体会
2016/01/22 职场文书
python实现简单聊天功能
2021/07/07 Python
详解python的异常捕获
2022/03/03 Python
tree shaking对打包体积优化及作用
2022/07/07 Java/Android
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS