tusFileReader.js 690 B

1234567891011121314151617181920212223242526
  1. import * as FileSystem from 'expo-file-system'
  2. import base64 from 'base64-js'
  3. export default function getTusFileReader (file, chunkSize, cb) {
  4. FileSystem.getInfoAsync(file.uri, { size: true }).then((info) => {
  5. cb(null, new TusFileReader(file, info.size))
  6. }).catch(cb)
  7. }
  8. class TusFileReader {
  9. constructor (file, size) {
  10. this.file = file
  11. this.size = size
  12. }
  13. slice (start, end, cb) {
  14. const options = {
  15. encoding: FileSystem.EncodingType.Base64,
  16. length: Math.min(end, this.size) - start,
  17. position: start,
  18. }
  19. FileSystem.readAsStringAsync(this.file.uri, options).then((data) => {
  20. cb(null, base64.toByteArray(data))
  21. }).catch(cb)
  22. }
  23. }