| import arrayBufferToBinaryString from './arrayBufferToBinaryString'; |
| |
| // shim for browsers that don't support it |
| function readAsBinaryString(blob, callback) { |
| if (typeof FileReader === 'undefined') { |
| // fix for Firefox in a web worker |
| // https://bugzilla.mozilla.org/show_bug.cgi?id=901097 |
| return callback(arrayBufferToBinaryString( |
| new FileReaderSync().readAsArrayBuffer(blob))); |
| } |
| |
| var reader = new FileReader(); |
| var hasBinaryString = typeof reader.readAsBinaryString === 'function'; |
| reader.onloadend = function (e) { |
| var result = e.target.result || ''; |
| if (hasBinaryString) { |
| return callback(result); |
| } |
| callback(arrayBufferToBinaryString(result)); |
| }; |
| if (hasBinaryString) { |
| reader.readAsBinaryString(blob); |
| } else { |
| reader.readAsArrayBuffer(blob); |
| } |
| } |
| |
| export default readAsBinaryString; |