tus-test.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import tus from 'tus-js-client'
  2. function tusUpload (blob) {
  3. return new Promise((resolve, reject) => {
  4. const upload = new tus.Upload(blob, {
  5. endpoint: 'https://master.tus.io/files/',
  6. retryDelays: [0, 1000, 3000, 5000],
  7. metadata: {
  8. filename: blob.name,
  9. filetype: blob.type
  10. },
  11. onError: function (error) {
  12. console.log('Failed because: ' + error)
  13. reject(error)
  14. },
  15. onProgress: function (bytesUploaded, bytesTotal) {
  16. var percentage = (bytesUploaded / bytesTotal * 100).toFixed(2)
  17. console.log(bytesUploaded, bytesTotal, percentage + '%')
  18. },
  19. onSuccess: function () {
  20. console.log('Download %s from %s', upload.file.name, upload.url)
  21. resolve(upload.url)
  22. }
  23. })
  24. upload.start()
  25. })
  26. }
  27. function testUploadFileWithTus (file) {
  28. return new Promise((resolve, reject) => {
  29. console.log('Attempting a tus upload in React Native...')
  30. console.log('with file: ', file)
  31. const xhr = new XMLHttpRequest()
  32. xhr.responseType = 'blob'
  33. xhr.onload = () => {
  34. console.log('LOAD', xhr.response)
  35. const blob = xhr.response
  36. tusUpload(blob)
  37. .then(resolve)
  38. .catch(reject)
  39. }
  40. xhr.onerror = (err) => {
  41. console.log(err)
  42. reject(err)
  43. }
  44. xhr.open('GET', file.uri)
  45. xhr.send()
  46. })
  47. }
  48. export default testUploadFileWithTus