大文件支持断点与分片 resumable.js

一、说明

        该库旨在通过 HTTP 上传大文件时引入容错功能。这是通过将每个文件分割成小块来完成的。然后,每当块上传失败时,就会重试上传,直到过程完成。这允许上传在本地或服务器的网络连接丢失后自动恢复上传。此外,它允许用户暂停、恢复甚至恢复上传而不会丢失状态,因为只会中止当前上传的块,而不是整个上传。

二、demo

<body>
    <button id="browseButton"></button>
    <div id="dropUpload"></div>
    <!-- 引用 resumable.js -->
    <script src=""></script>
    <script>
        let r = new Resumable({
            target: '/java-example/upload', // 目标上传的地址
            chunkSize: 1 * 1024 * 1024, // 分片大小
            testChunks: true, // 开启断点,允许刷新浏览器或者断网情况下,恢复网络后继续上传
            testTarget:'/test.target', // 开启断点续传后,发起的是一个 get 请求,此地址为测试该片是否已经上传,检测上传后则跳过进行下一个检测,200表示已经存在 204表示不存在
            forceChunkSize:true, //强制所有块小于或等于 chunkSize,否则可能导致分片不准
            query:{
                key:'fskv'
            }, // 自定义参数,或者以函数的方式进行返回
            // query: function(file) {
            //     return {
            //         key: file.file.name
            //     }
            // } // 使用函数的方式可以动态修改参数
        });
        r.assignDrop($('dropUpload')[0]); // 拖拽上传
        r.assignBrowse($('#browseButton')[0]); // 点击文件上传
        r.on('fileAdded', function (file, event) {
            // 文件上传成功事件
        });
        r.on('fileSuccess', function (file, message) {
            // 文件上传到服务器,message可以拿到返回的信息
        });
        r.on('fileError', function (file, message) {

        });
    </script>
</body>

注:该分片从1开始,若想从0开始修改源码 $.offset 即可

三、官网

https://github.com/23/resumable.js/tree/master

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
resumable.js 是一个 JavaScript 库,用于在网络连接中断或暂停时,使文件上传能够恢复。以下是 resumable.js 的官方教程: 1. 安装 resumable.js 你可以通过 npm 安装 resumable.js: ``` npm install resumablejs ``` 或者,你可以将 resumable.js 下载到本地,并将其包含在你的 HTML 文件中: ``` <script src="path/to/resumable.js"></script> ``` 2. 准备 HTML 代码 在你的 HTML 文件中添加以下代码: ``` <input type="file" id="fileInput"> <button id="uploadButton">Upload</button> ``` 这将创建一个文件上传控件和一个上传按钮。 3. 初始化 resumable.js 在你的 JavaScript 文件中添加以下代码: ``` var r = new Resumable({ target: '/upload', chunkSize: 1 * 1024 * 1024, simultaneousUploads: 4, testChunks: false }); r.assignBrowse(document.getElementById('fileInput')); r.assignDrop(document.body); document.getElementById('uploadButton').addEventListener('click', function() { r.upload(); }); ``` 这将创建一个 Resumable 对象,并将其绑定到文件上传控件和上传按钮。`target` 属性指定文件上传的目标 URL,`chunkSize` 属性指定上传的块大小,`simultaneousUploads` 属性指定同时上传的块数,`testChunks` 属性指定是否测试上传的块。 4. 处理事件 你可以通过监听 Resumable 对象的事件来处理上传过程中的不同阶段。以下是一些常用的事件: - `fileAdded`:当文件添加到上传队列时触发。 - `fileSuccess`:当文件上传成功时触发。 - `fileError`:当文件上传失败时触发。 - `progress`:当上传进度发生变化时触发。 你可以使用以下代码来监听事件: ``` r.on('fileAdded', function(file) { console.log('File added:', file); }); r.on('fileSuccess', function(file) { console.log('File uploaded:', file); }); r.on('fileError', function(file, message) { console.log('File upload error:', file, message); }); r.on('progress', function() { console.log('Progress:', r.progress()); }); ``` 5. 完整示例 下面是一个完整的示例,演示如何使用 resumable.js 进行文件上传: ``` <!DOCTYPE html> <html> <head> <title>Resumable.js Example</title> <script src="path/to/resumable.js"></script> </head> <body> <input type="file" id="fileInput"> <button id="uploadButton">Upload</button> <script> var r = new Resumable({ target: '/upload', chunkSize: 1 * 1024 * 1024, simultaneousUploads: 4, testChunks: false }); r.assignBrowse(document.getElementById('fileInput')); r.assignDrop(document.body); r.on('fileAdded', function(file) { console.log('File added:', file); }); r.on('fileSuccess', function(file) { console.log('File uploaded:', file); }); r.on('fileError', function(file, message) { console.log('File upload error:', file, message); }); r.on('progress', function() { console.log('Progress:', r.progress()); }); document.getElementById('uploadButton').addEventListener('click', function() { r.upload(); }); </script> </body> </html> ``` 这个示例将上传文件块大小设置为 1MB,同时最多上传 4 个块。在文件添加、上传成功、上传失败和上传进度发生变化时,会在控制台中输出相应的信息。当点击上传按钮时,将触发上传操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值