赞
踩
第一次写前端的使用笔记,也是因为这个工具没有很正式的官方文档。所以为防止之后还有可能用到,最好是做一次记录!
是一个基于Vue的上传文件组件,只需要引入其对应依赖,就可以直接使用
<uploader :options="options"
class="uploader-example">
<uploader-unsupport></uploader-unsupport>
<uploader-drop>
<uploader-btn>上传文件</uploader-btn>
<uploader-btn :directory="true">上传文件夹</uploader-btn>
</uploader-drop>
<uploader-list></uploader-list>
</uploader>
已经封装完全的组件。
功能专一,只做上传文件这件事,但是可以使用其封装的一些方法以及参数完成很多复杂上传的场景
Vue2:
npm install vue-simple-uploader --save
Vue3:
npm install vue-simple-uploader@next --save
前文已经知道,我们只需要使用就可以引入一个上传文件的组件,包括他的样式。
所以我们只需要根据自己对应的业务,去设置需要的入参以及方法逻辑。
这里就直接用分片上传举例:
options: { target: '/disk/file/uploadFile', chunkSize: 1024 * 1024 * 5, //3MB fileParameterName: 'file', //上传文件时文件的参数名,默认file singleFile: true, // 启用单个文件上传。上传一个文件后,第二个文件将超过现有文件,第一个文件将被取消。 query: function(file, res, status) { console.log(file) return { "userId": Cookies.get('userId'), "fileType": file.getType(), } }, maxChunkRetries: 3, //最大自动失败重试上传次数 testChunks: true, //是否开启服务器分片校验 checkChunkUploadedByResponse: function (chunk, message) { let res = JSON.parse(message); if (!res.status) { return false; } }, simultaneousUploads: 3, //并发上传数 },
options属性,属性很多很多,这里可以直接看工具文档去了解 文档。
在分片场景中:
除了上面这些常用的属性外,还有很多很多设置上传限制、回调等的属性。
每个分片的请求参数默认为:
{{{width=“auto” height=“auto”}}}
指定上传文件前【当默认设置选择文件即上传时】,先调用的函数。
这里可用作秒传,并解析文件MD5码以及设置。
除此之外,如果需要当文件加入文件列表待上传前,还想要对文件进行操作,则可以调用filesAdded函数入参的file的API方法及属性。
filesAdded(file, event) {
}
file不是文件,而是工具封装的一个文件对象,其包含很多操作文件的方法。
比如在我的业务中,通过后端接收文件并且解析得到MD5码返回给前端后。
前端需要将此码设置到所有分片文件的唯一标识identifier属性上,则可以用到
file.uniqueIdentifier = data.data.identifier; //data.data.identifier;为后端属性
并且在filesAdded方法中,当后端处理后,可以使用file对应的方法控制状态:
.pause() 暂停上传文件。
.resume() 继续上传文件。
.cancel() 取消上传且从文件列表中移除。
.retry() 重新上传文件。
当所有分片上传后,执行的方法。
一般就文件上传是否成功作判断,以及对文件上传的后续操作【比如删除分片文件的临时文件夹】进行控制。
总之这只是一个上传文件的工具,倘若不使用他,使用原生的axios也可以完成所有的操作。
并且他也有他的局限性,一个很明显的是,完全规定写死了一次分片请求的入参:
{{{width=“auto” height=“auto”}}}
并且在Vue3下还有很多方法以及Bug没补全,所以最好不只是依赖工具完成文件上传、分片、断点这些操作,最重要的还是思维理解。
版权声明:本站原创文章,于2022-05-19,乐云一发表
转载请注明:leyuna.xyz
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。