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 相关文章推荐
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
Apr 12 Javascript
通过修改referer下载文件的方法
May 11 Javascript
动感效果的TAB选项卡jquery 插件
Jul 09 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
Oct 17 Javascript
js 实现菜单上下显示附效果图
Nov 21 Javascript
js数组的基本操作(很全自己整理的)
Oct 16 Javascript
jquery SweetAlert插件实现响应式提示框
Aug 18 Javascript
Jquery 整理元素选取、常用方法一览表
Nov 26 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
Sep 04 Javascript
AngularJS自定义表单验证功能实例详解
Aug 24 Javascript
vue 防止页面加载时看到花括号的解决操作
Nov 09 Javascript
vue里使用create, mounted调用方法
Apr 26 Vue.js
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和MySql来与ODBC数据连接
2006/10/09 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
PHP+MYSQL会员系统的开发实例教程
2014/08/23 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
JavaScript 的继承
2011/10/01 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
Vue数组更新及过滤排序功能
2017/08/10 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
js实现微信聊天效果
2020/08/09 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
[01:46]辉夜杯—打造中国DOTA新格局
2015/12/25 DOTA
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
python实现机器学习之元线性回归
2018/09/06 Python
python 将json数据提取转化为txt的方法
2018/10/26 Python
python命令行工具Click快速掌握
2019/07/04 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
python中count函数简单的实例讲解
2020/02/06 Python
Python列表如何更新值
2020/05/27 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
网络安全类面试题
2015/08/01 面试题
个人实用简单的自我评价
2013/10/19 职场文书
优秀公益广告词大全
2014/03/19 职场文书
道歉的话怎么说
2015/05/12 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
MySQL数据库事务的四大特性
2022/04/20 MySQL