A promisified FileReader
implementation very similar to the browser's FileReader API, with a few differences:
- the File or Blob instance is given at construction time;
- all
readAs...
methods don't take a Blob or File instance as first argument anymore; - all
readAs...
methods return a Promise that can be awaited; - reading in chunks is easy as:
- you just need to await the next chunk (no event / callback API anymore);
- the current reading position is automatically tracked.
import { FileReader } from '@tanker/file-reader';
// Retrieve a file or blob somehow
const file = new File(
['The quick brown fox jumps over the lazy dog'],
'fox.txt',
{ type: 'plain/text' }
);
// Create your file reader
const reader = new FileReader(file);
// Read the whole file
const text = await reader.readAsText('UTF-8');
const dataUrl = await reader.readAsDataURL();
const arrayBuffer = await reader.readAsArrayBuffer();
// Or read binary chunks (ArrayBuffer)
const chunkSize = 8; // bytes
let chunk;
do {
chunk = await reader.readAsArrayBuffer(chunkSize);
// do something with the chunk
} while (chunk.byteLength > 0);
This package is a dependency of the Tanker client SDKs for end-to-end encryption:
- @tanker/client-browser for Web applications
- @tanker/client-node for Node.js client applications
Read the documentation to get started.