Isaac McFadyen | YYZ01
08/31/2022, 2:20 AMIsaac McFadyen | YYZ01
08/31/2022, 2:21 AMjoshh
08/31/2022, 2:21 AMIsaac McFadyen | YYZ01
08/31/2022, 2:21 AMIsaac McFadyen | YYZ01
08/31/2022, 2:21 AMjoshh
08/31/2022, 2:22 AMjoshh
08/31/2022, 2:22 AMIsaac McFadyen | YYZ01
08/31/2022, 2:24 AMIsaac McFadyen | YYZ01
08/31/2022, 2:24 AMjoshh
08/31/2022, 2:25 AMjoshh
08/31/2022, 2:25 AMjoshh
08/31/2022, 2:25 AMjoshh
08/31/2022, 2:25 AMjoshh
08/31/2022, 2:26 AMjoshh
08/31/2022, 2:26 AMIsaac McFadyen | YYZ01
08/31/2022, 2:26 AMIsaac McFadyen | YYZ01
08/31/2022, 2:26 AMIsaac McFadyen | YYZ01
08/31/2022, 2:26 AMIsaac McFadyen | YYZ01
08/31/2022, 2:28 AMUpload-Length
should be length in bytes.joshh
08/31/2022, 2:28 AMjoshh
08/31/2022, 2:28 AMasync function uploadVideo(e) {
// Get the selected file from the input element
var file = e.target.files[0]
if (!file) {
return;
}
const uploadLink = await getUploadLink(file.size);
if (uploadLink == null) { alert(`[error]: Could not find drop point.`); }
setShowVideoDetailsBox(true);
// Create a new tus upload
var upload = new tus.Upload(file, {
endpoint: uploadLink,
retryDelays: [0, 3000, 5000, 10000, 20000],
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)
}
})
// Check if there are any previous uploads to continue.
upload.findPreviousUploads().then(function (previousUploads) {
// Found previous uploads so we select the first one.
if (previousUploads.length) {
upload.resumeFromPreviousUpload(previousUploads[0])
}
// Start the upload
upload.start()
})
}
Isaac McFadyen | YYZ01
08/31/2022, 2:31 AMUpload-Metadata
from the backend?Isaac McFadyen | YYZ01
08/31/2022, 2:31 AMfile.size
works for the Upload-Length
for me FWIWjoshh
08/31/2022, 2:31 AMjoshh
08/31/2022, 2:32 AMconst response = await fetch(
const response = await fetch(
'https://api.cloudflare.com/client/v4/accounts/165741ddf22256f1c2d442e345765203/stream?direct_user=true',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${env.StreamReadWriteAPIKey}`,
'Tus-Resumable': '1.0.0',
'Upload-Length': size,
'Upload-Metadata': "",
},
data: JSON.stringify({ requireSignedURLs: true, allowedOrigins: ["motionfans.com"] })
}
)
Isaac McFadyen | YYZ01
08/31/2022, 2:32 AMIsaac McFadyen | YYZ01
08/31/2022, 2:32 AMUpload-Metadata
Isaac McFadyen | YYZ01
08/31/2022, 2:32 AMIsaac McFadyen | YYZ01
08/31/2022, 2:33 AMIsaac McFadyen | YYZ01
08/31/2022, 2:34 AMmaxDurationSeconds
is required.