Vue项目中遇到了大文件分片上传的问题,之前用过webuploader,索性就把Vue2.0与webuploader结合起来使用,封装了一个vue的上传组件,使用起来也比较舒爽。
分片与并发结合,将一个大文件分割成多块,并发上传,极大地提高大文件的上传速度。
当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件。另外分片传输能够更加实时的跟踪上传进度。
实现后的界面:
主要是两个文件,封装的上传组件和具体的ui页面,上传组件代码下面有列出来。这两个页面的代码放到github上了: 。
在项目中引入webuploader
1.先在系统中引入jquery(插件基于jq,坑爹啊!),如果你不知道放哪,那就放到 index.html 中。
2.在 上下载 Uploader.swf
和 webuploader.min.js
,可以放到项目静态目录 static 下面;在 index.html 中引入webuploader.min.js。
rush:js;">
(无需单独再引入 webuploader.css ,因为没有几行css,我们可以复制到vue组件中。)
需要注意的点:
1.在vue组件中,通过 import './webuploader'
; 的方式引入webuploader
,会报''caller','callee',and 'arguments' properties may not be accessed on strict mode ...'的错, 这是因为你的babel使用了严格模式,而caller这些在严格模式下禁止使用。所以 可以直接在index.html
中引入webuploader.js
,或者手动去解决babel中'use strict'的问题。
基于webuploader封装Vue组件
封装好的组件upload.vue如下,接口可以根据具体的业务进行扩展。
注意:功能和ui分离,此组建封装好了基本的功能,没有提供ui,ui在具体的页面上去实现。
rush:js;">