我正在尝试上传一个使用TUS方法(Js Client)的视频,一切看起来都很好。我会在下面张贴我的代码,看看你是否可以帮助我,请!
// /** Get one time link to upload video to cloudFlare */
router.post('/oneTimeLink', async (req, res) => {
var config = {
method: 'POST',
url: `https://api.cloudflare.com/client/v4/accounts/${process.env.CLOUDFLARE_CLIENT_ID}/stream?direct_user=true`,
headers: {
'Authorization': `Bearer ${process.env.CLOUDFLARE_KEY_ID}`,
'Tus-Resumable': '1.0.0',
'Upload-Length': '1',
'Upload-Metadata': 'maxdurationseconds NjAw',
},
};
axios(config)
.then(async function (response) {
const location = await response.headers.location
console.log(location)
res.set({
'Access-Control-Allow-Headers': '*',
'Access-Control-Expose-Headers': '*',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': '*',
'Location': location,
})
res.send(true)
})
.catch(function (error) {
console.log(error);
});
})在上传元数据中,我设置了maxduration秒NjAw,这意味着maxdurationseconds为10分钟(我正在发送一个25秒视频)。
这是我的node.js后端API。
现在在前端,我使用js客户端,如下所示。
进口:
import * as tus from "tus-js-client";功能:
const file = state.coursesData['Module 1'][0].content.video
var upload = new tus.Upload(file, {
endpoint: 'http://localhost:8080/dev/coursesLibraryPractitioner/oneTimeLink',
chunkSize: 250 * 1024 * 1024,
metadata: {
filename: file.name,
filetype: file.type
},
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)
}
})
upload.start()端点指向我的后端服务器,它在位置头中返回URL。
现在,当我触发这个函数时,就会发生这种情况。
后端路由执行时不会出错,Cloudflare仪表板会创建一个新的空视频,根据文档,这是很棒的。
在前端日志中:

独立于块状,有时百分比达到100%,但从不保存视频。我不知道那补丁请愿书是从哪来的。
请让我为我工作的公司这个过程,他们将获得一个比我的更强劲的订阅,现在设定为每月1000分钟的测试。
谢谢您的帮助!!
发布于 2022-10-29 16:03:26
上传结束时的最后一块应该是256 The倍数。
尝试将250 * 1024 * 1024更改为256 * 1024 * 1024。
https://stackoverflow.com/questions/73781951
复制相似问题