tus上传到Vimeo的操作不会恢复,并且始终会重新启动

问题描述

我正在尝试使用tus协议在vimeo上上传视频,并且视频上传正常,但是如果我们暂停并恢复,则重新开始上传,我可能做错了什么?这是代码。

$(document).on("click","button",function (e) {
        var file = $(this).prop("files")[0];
        $.ajax({
            'url': 'https://api.vimeo.com/me/videos','type': 'POST','headers': {
                'Accept': 'application/vnd.vimeo.*+json;version=3.4','Content-Type': 'application/json','Authorization': 'bearer ' + 'token'
            },"data": JSON.stringify({
                "upload": {
                    "approach": "tus","size": file.size   
                }
            }),'success': function (result) {
                var upload = new tus.Upload(file,{
                    uploadUrl: result.upload.upload_link,onError: function (error) {
                        console.log("Failed because: " + error)
                    },onProgress: function (bytesUploaded,bytesTotal) {
                        var percentage = (bytesUploaded / bytesTotal * 100).toFixed(2)
                        console.log(bytesUploaded,bytesTotal,percentage + "%")
                    },onSuccess: function () {
                        console.log("Download %s from %s",upload.file.name,upload.url)
                    }
                })

                // Add listeners for the pause and unpause button
                var pauseButton = document.querySelector("#pauseButton")
                var unpauseButton = document.querySelector("#unpauseButton")
                pauseButton.addEventListener("click",function () {
                    upload.abort()
                })
                unpauseButton.addEventListener("click",function () {
                    upload.start()
                })

        // Start the upload
        upload.start()

            },'error': function (result) {   
            }
        });

解决方法

一个迟到的回复,但我自己遇到了这个问题,我想我会与将来偶然发现此页面的其他人分享我如何修复它。

我必须在我的“新 tus.Upload()”中设置 chunkSize 变量。默认情况下,chunkSize 是无限的,而且 Vimeo 的 'upload-offset' 响应似乎仅针对已完成的块,因此在上传完成之前没有已完成的块。

通过将其设置为 5000000 (5mb),我可以成功地暂停和恢复上传。恢复后,它会在最后完成的块处重新启动,因此对于小文件(例如 30mb),恢复后可能会明显下降几个百分比。对于 5mb 占较小百分比的较大文件,这将不太明显,或者您可以将 chunkSize 设置为 1mb,尽管 chu​​nkSize 越小,由于 http 请求数量增加,上传速度越慢。

   var upload = new tus.Upload(file,{
            chunkSize: 5000000,uploadUrl: result.upload.upload_link,onError: function (error) {
                console.log("Failed because: " + error)
            },onProgress: function (bytesUploaded,bytesTotal) {
                var percentage = (bytesUploaded / bytesTotal * 100).toFixed(2)
                console.log(bytesUploaded,bytesTotal,percentage + "%")
            },onSuccess: function () {
                console.log("Download %s from %s",upload.file.name,upload.url)
            }
   })

希望这对某人有所帮助。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...