1.效果图

2.上传文件时,如果使用普通上传,则需要上传一个文件完成后才能上传下一个文件,如果文件很大时,可能会造成浏览器无响应,如果采用分片上传方式,将一个大文件分割成多块,并发上传,极大地提高大文件的上传速度。

当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件。另外分片传输能够更加实时的跟踪上传进度。

在项目中引入webuploader

第一步:引入第三方js和css

注意:也可通过安装依赖的方式,引入jquery插件

npm install jquery --save

第二步:封装Vue组件

export default{

name: 'vue-upload',

props: {

accept: {

type: Object,

default: null,

},

// 上传地址

url: {

type: String,

default: uploadUrl,

},

// 上传最大数量 默认为100

fileNumLimit: {

type: Number,

default: 1,

},

// 大小限制 默认2M

fileSingleSizeLimit: {

type: Number,

default: 1024*1024*1024*10,

},

// 上传时传给后端的参数,一般为token,key等

formData: {

type: Object,

default: null

},

// 生成formData中文件的key,下面只是个例子,具体哪种形式和后端商议

keyGenerator: {

type: Function,

default(file) {

constcurrentTime = newDate().getTime();

constkey = `${currentTime}.${file.name}`;

returnkey;

},

},

multiple: {

type: Boolean,

default: false,

},

// 上传按钮ID

uploadButton: {

type: String,

default: '',

},

},

data() {

return{

uploader: null

};

},

mounted() {

this.initWebUpload();

},

methods: {

initWebUpload() {

this.uploader = WebUploader.create({

auto: false, // 选完文件后,是否自动上传

// swf: '/static/lib/webuploader/Uploader.swf', // swf文件路径

server: this.url, // 文件接收服务端

pick: {

id: this.uploadButton, // 选择文件的按钮

multiple: this.multiple, // 是否多文件上传 默认false

label: '',

},

accept: this.getAccept(), // 允许选择文件格式。

threads:10,

fileNumLimit: this.fileNumLimit, // 限制上传个数

fileSingleSizeLimit: this.fileSingleSizeLimit, // 限制单个上传图片的大小

formData: this.formData, // 上传所需参数

chunked: true, //分片上传

chunkSize: 1024*1024*10, //分片大小

duplicate: true, // 重复上传

});

// 当有文件被添加进队列的时候,添加到页面预览

this.uploader.on('fileQueued', (file) => {

this.$emit('fileChange', file);

});

this.uploader.on('beforeFileQueued', (file) => {

this.$emit('beforeFileQueued', file);

});

this.uploader.on('uploadStart', (file) => {

console.log( this.keyGenerator)

// 在这里可以准备好formData的数据

// this.uploader.options.formData.key = this.keyGenerator(file);

});

// 文件上传过程中创建进度条实时显示。

this.uploader.on('uploadProgress', (file, percentage) => {

});

this.uploader.on('uploadSuccess', (file, response) => {

var_this=this;

this.$emit('success', file, response);

});

this.uploader.on('uploadError', (file, reason) => {

console.log(reason);

this.$emit('uploadsError', file, reason);

for(vari = 0; i < this.uploader.getFiles().length; i++) {

this.uploader.removeFile(this.uploader.getFiles()[i]);

}

this.uploader.reset();

this.initWebUpload();//初始化

});

this.uploader.on('error', (type) => {

let errorMessage = '';

if(type === 'F_EXCEED_SIZE') {

errorMessage = `文件大小不能超过${this.fileSingleSizeLimit / (1024 * 1000)}M`;

} else if(type === 'Q_EXCEED_NUM_LIMIT') {

errorMessage = '文件上传已达到最大上限数';

} else{

errorMessage = `上传出错!请检查后重新上传!错误代码${type}`;

}

console.error(errorMessage);

this.$emit('error', errorMessage);

});

this.uploader.on('uploadComplete', (file, response) => {

this.$emit('complete', file, response);

});

this.uploader.on('stopUpload', () => {

var_this=this;

_this.uploader.reset();

_this.initWebUpload();//初始化

});

this.uploader.on('uploadFinished', () => {

console.log(_this.uploader.getFiles())

});

},

getStats:function(){

return this.uploader.getStats();

},

upload(file,data) {

this.uploader.options.formData=data;//传参数

this.uploader.upload(file,data);

},

stop(file) {

this.uploader.stop(file);

},

reset(){

this.uploader.reset();

},

refresh(){

this.uploader.refresh();

},

// 取消并中断文件上传

cancelFile(file) {

this.uploader.cancelFile(file);

},

// 在队列中移除文件

removeFile(file, bool) {

this.uploader.removeFile(file, bool);

},

getFiles() {

return this.uploader.getFiles();

},

getAccept() {

return{

title: 'Videos',

extensions: 'mp4,flv,avi,wmv,ogg,rmvb,mts',

mimeTypes: '.mp4,.flv,.avi,.wmv,.ogg,.rmvb,.mts'

};

},

},

};

第三步 把第二步组件引到你的页面中,使用组件,实现分片上传

vue获取上传进度_vue,webuploader实现文件分片上传,并显示上传进度相关推荐

  1. linux下查看进度命令,在Linux系统中使用Coreutils Viewer显示命令运行进度

    Coreutils Viewer(cv)是一个简单的程序,它可以用于显示任何核心组件命令(如:cp.mv.dd.tar.gzip.gunzip.cat.grep.fgrep.egrep.cut.sor ...

  2. axios 上传文件_聚是一团火散作满天星,前端Vue.js+elementUI结合后端FastAPI实现大文件分片上传...

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_175 分片上传并不是什么新概念,尤其是大文件传输的处理中经常会被使用,在之前的一篇文章里:python花式读取大文件(10g/50 ...

  3. html上传文件_.NET基于WebUploader大文件分片上传、断网续传、秒传

    (给DotNet加星标,提升.Net技能) 转自:学习中的苦与乐 cnblogs.com/xiongze520/p/10412693.html 现在的项目开发基本上都用到了上传文件功能,或图片,或文档 ...

  4. vue获取微信登陆权限_Vue获取微信JSSDK授权,以及微信分享

    场景 Vue获取JSSDK授权以便在微信浏览器,或者嵌在小程序里面做些小事情,如朋友/朋友圈分享,微信支付,图片上传下载等 步骤一 配置安全域名: 在微信公众平台对应的公众号设置里面配上相应的JS接口 ...

  5. vue 获取dom子元素_vue获取dom元素注意事项

    mounted(){ setTimeout(()=>{ this.contentToggle(); },1000) }, methods:{ contentToggle(){ console.l ...

  6. arduino上传项目总是出错,串口通信或TX/RX显示上传项目出错

    今天摸arduino的时候又遇到了这个问题,突然想起多年以前的坑: 如果项目中需要使用TX,RX口,那么在上传的时候一定不能把这两个插上,否则会报错,而且是各种奇怪的错误,典型就是会显示:项目上传出错 ...

  7. php分页上一页下一页判断,一个分页函数:显示“上一页下一页”等

    '************************************************** '函数名:ShowPage '作 用:显示"上一页 下一页"等信息 '参 数 ...

  8. vue获取编辑器纯文字_vue中使用富文本编辑器

    前端使用富文本编辑器的插件有很多,今天献上wangeditor的使用教程,教你如何在vue中使用富文本编辑器 wangeditor是一个萌新富文本编辑器,基于js和css,重点在于它轻量,如果你需要的 ...

  9. vue 获取用户位置 高德_Vue使用高德地图

    主要是想记录一下使用高德地图地位以及标记当前位置,搜索位置的过程. 创建Vue项目的流程 引入高德地图 在index.html 的head中引入代码. 复制代码 设置容器,初始化地图. .contai ...

最新文章

  1. Redis的字典扩容与ConcurrentHashMap的扩容策略比较
  2. wifi的基础知识及原理1
  3. 强大的NVAE:以后再也不能说VAE生成的图像模糊了
  4. error2---BeginPath和EndPath之间的TextOut无法显示
  5. 全国一等奖,F题:智能送药小车。
  6. java hanlp分词_Hanlp分词实例:Java实现TFIDF算法
  7. [深度学习] PyTorch-BigGraph 使用
  8. 常用并发工具类(线程池)
  9. 生信老司机以中心法则为主线讲解组学技术的应用和生信分析心得—限时免费
  10. 波音正在对737 Max进行软件升级 改善飞行员培训计划
  11. HttpServlet请求重定向
  12. mysql force Index 强制索引[转]
  13. java retainall_Java Set retainAll()用法及代码示例
  14. CodeBlock:Process terminated with status1073741510
  15. 怎么查期刊是核心、是EI,还是SCI,或者说有哪些不是吧?
  16. 游戏后台架构发展历史及展望
  17. win10系统重装(无需u盘)(无需下载第三方软件)(绝对纯净版)(全网最简)
  18. 从软件工程的角度写机器学习1——机器学习的思想
  19. 《水经注地图服务》图层管理介绍
  20. python实现秒杀系统_双十一买买买,教你用Python实现秒杀系统

热门文章

  1. 安装salome需注意的问题
  2. 基于数字孪生的城市地下智慧管网
  3. 智能卡 加密芯片 SMEC90ST
  4. 【简单数字式电容测量仪 】
  5. 【分布式】分布式基本理论
  6. 2019年“旅行者之选”全球、亚洲、中国最佳目的地 | 周末
  7. 设置思科设备console密码、enable密码、vty登录密码
  8. 深度好文推荐:互联网厂商,究竟是如何看待5G的?
  9. win10管理员权限怎么获得_企业微信怎么开通超级管理员权限?企业微信创建人是谁?...
  10. 千鸟配送获1000万元天使轮融资,同城货运烧钱大战之后的冷静思考?