mirror of
https://github.com/transloadit/uppy.git
synced 2026-07-20 16:53:33 +00:00
53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
import tus from 'tus-js-client'
|
|
|
|
function tusUpload (blob) {
|
|
return new Promise((resolve, reject) => {
|
|
const upload = new tus.Upload(blob, {
|
|
endpoint: 'https://master.tus.io/files/',
|
|
retryDelays: [0, 1000, 3000, 5000],
|
|
metadata: {
|
|
filename: blob.name,
|
|
filetype: blob.type
|
|
},
|
|
onError: function (error) {
|
|
console.log('Failed because: ' + error)
|
|
reject(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)
|
|
resolve(upload.url)
|
|
}
|
|
})
|
|
|
|
upload.start()
|
|
})
|
|
}
|
|
|
|
function testUploadFileWithTus (file) {
|
|
return new Promise((resolve, reject) => {
|
|
console.log('Attempting a tus upload in React Native...')
|
|
console.log('with file: ', file)
|
|
|
|
const xhr = new XMLHttpRequest()
|
|
xhr.responseType = 'blob'
|
|
xhr.onload = () => {
|
|
console.log('LOAD', xhr.response)
|
|
const blob = xhr.response
|
|
tusUpload(blob)
|
|
.then(resolve)
|
|
.catch(reject)
|
|
}
|
|
xhr.onerror = (err) => {
|
|
console.log(err)
|
|
reject(err)
|
|
}
|
|
xhr.open('GET', file.uri)
|
|
xhr.send()
|
|
})
|
|
}
|
|
|
|
export default testUploadFileWithTus
|