UNPKG

@ctx-core/file-reader

Version:
31 lines (30 loc) 902 B
/** * Ported from https://github.com/jahredhope/promise-file-reader/blob/master/PromiseFileReader.js * @param {File}file * @param {'ArrayBuffer'|'BinaryString'|'DataURL'|'Text'}as * @returns {Promise<string|ArrayBuffer|Blob|null|undefined>} */ export function readAs( file, as ) { if (!(file instanceof Blob)) { throw new TypeError('Must be a File or Blob') } return new Promise((resolve, reject)=>{ const reader = new FileReader() reader.onload = (e)=>resolve(e.target.result) reader.onerror = (e)=>reject(new Error(`Error reading ${file.name}: ${e.target.result}`)) switch (as) { case 'ArrayBuffer': return reader.readAsArrayBuffer(file) case 'BinaryString': return reader.readAsBinaryString(file) case 'DataURL': return reader.readAsDataURL(file) case 'Text': return reader.readAsText(file) default: throw `Invalid as argument: ${as}` } }) }