大文件上传(秒传/断点续传)_使用Vue-Simple-Uploader插件 --Vue/Django完整实现

Vue-Simple-Uploader插件-Github地址: https://github.com/simple-uploader/vue-uploader/blob/master/README_zh-CN.md
simple-uploader - 详细参数 - Github地址: https://github.com/simple-uploader/Uploader/blob/develop/README_zh-CN.md

Vue-Simple-Uploader是基于simple-uploader封装的Vue插件. 因此, 好多参数配置直接参考simple-uploader介绍的即可.


本文完成的项目 - Github地址: https://github.com/ClearlightY/FileUpload
欢迎fork, 有用的话, 希望可以star一下,感谢~

在这里插入图片描述
在这里插入图片描述


项目初始, 参考了大量Vue插件的相关文章, 很感谢.
相关参考文章:

现在大部分的网站使用的是标准HTML的上方式来上文件。一般情况下标准HTML方式在网页中只能上4MB左右的文件,如果访问的用户比较多的时侯这种方式容易上失败。虽然标准HTML上方式开发起来比较简单,但是这种方式用户体验比较差,上的文件大小受到限制,所以如果我们需要上上百或者更大的上G的文件时,HTML标准上方式是无法满足我们的需求的。 而另一方面,随着互联网行业的发展用户产生的新的需求也越来越多,同时对用户体验也提出了更高的要求,统的HTML方式也越来越难已满足新的用户需求。现在大部分的用户有文件批量上的需求,希望只通过点击一次鼠标就能够批量的上多张图片,而不是一张张的选择文件上传,这样操作即浪费时间又非常烦琐。 近年来,由于数码和影视行业的迅猛发展刺激了用户对大文件的上需求,现在越来越多的用户希望能够通过WEB的方式上更大的文件,比如电影和图片。这些类型的文件通常都非常大,一般都在500MB以上,高清的影视文件至少在1G以上。这样的大文件是根本无法通过标准HTML方式来上的。 不仅如此,由于国内网络环境比较特殊,有许多地区的网络不够稳定,在上文件的过程中可能会发生断网的情况。如果用户正在上一个1000MB的文件,已经上了500MB,这时网络出现问题上中止了。那么下一次用户需要要重新上前面的500MB,而不是从500MB开始上,这将浪费用户的许多时间。 新颖网络HTTP文件断点续传控件是专门用于解决HTTP大文件上传的需求而开发的产品。通过我们的HttpPartition模块用户能够非常方便的一次性选择超过200个的文件。而且我们升级了用户体验,用户现在不仅能够通过点击按钮来选择多个文件,还可以通过HttpDroper来拖拽文件甚至是文件夹。 现在我们能够轻松支持2G左右的大文件上传。为了减轻服务器的压力在HttpUploader模块中我们并不是一次上2G的数据,而是将2G化分为小的数据块,每次向服务器上约128KB左右的数据。同时在每次上的数据中附带了文件大小,起始位置,文件MD5等信息。对于开发人员来说,有了这些信息,断点续传功能将会变的和普通的文件上传功能一样简单。 相信新颖网络HTTP断点续传控件能够帮助您赢利市场。 产品介绍:[url=http://www.cnblogs.com/xproer/archive/2012/02/17/2355440.html][/url]
实现文件的断点续传和进度显示,可以使用Vue-Simple-Uploader这个插件。下面是一个使用Vue-Simple-Uploader实现文件断点续传和进度显示的示例: 首先,安装Vue-Simple-Uploader插件: ``` npm install vue-simple-uploader --save ``` 然后,在Vue组件中引入和使用Vue-Simple-Uploader插件: ```html <template> <div> <vue-simple-uploader ref="uploader" :multiple="false" :auto-upload="false" :chunk-size="chunkSize" :upload-url="uploadUrl" :headers="headers" :params="params" :with-credentials="withCredentials" @progress="onProgress" @chunk-success="onChunkSuccess" @success="onSuccess" @error="onError" > <button @click="uploadFile">上文件</button> </vue-simple-uploader> </div> </template> <script> import VueSimpleUploader from 'vue-simple-uploader'; export default { components: { VueSimpleUploader, }, data() { return { chunkSize: 1024 * 1024, // 每个分片的大小 uploadUrl: '/upload', // 上地址 headers: {}, // 请求头 params: {}, // 请求参数 withCredentials: false, // 发送跨域请求时是否携带cookie }; }, methods: { // 上文件 uploadFile() { this.$refs.uploader.upload(); }, // 上进度 onProgress(progress) { console.log(`上进度:${progress}%`); }, // 分片上成功 onChunkSuccess(chunkResponse, chunkUploadParams, successChunks, totalChunks) { console.log(`分片上成功:${chunkResponse}`); }, // 上成功 onSuccess(response, file, fileList) { console.log(`上成功:${response}`); }, // 上失败 onError(error, file, fileList) { console.log(`上失败:${error}`); }, }, }; </script> ``` 在上面的示例中,我们通过设置Vue-Simple-Uploader的props来实现文件的一些配置,如每个分片的大小、上地址、请求头、请求参数等。然后,我们通过调用`this.$refs.uploader.upload()`方法来触发文件上传。在上过程中,Vue-Simple-Uploader会触发一些事件,如上进度、分片上成功、上成功、上失败等,我们可以通过监听这些事件来实现断点续传和进度显示的功能。 其中,`@progress`事件会在上过程中定时触发,可以用来显示上进度;`@chunk-success`事件会在每个分片上成功后触发,可以用来记录已经上的分片;`@success`事件会在文件上传成功后触发,可以用来处理上成功后的逻辑;`@error`事件会在上失败后触发,可以用来处理上失败后的逻辑。 需要注意的是,为了实现断点续传功能,我们需要在后端实现接收分片、合并分片等功能。具体实现方式可以参考Vue-Simple-Uploader的文档。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值