@niivue/niivue
Version:
minimal webgl2 nifti image viewer
34 lines (28 loc) • 1.09 kB
text/typescript
export function readFileAsDataURL(input: File | FileSystemFileEntry): Promise<string> {
return new Promise<string>((resolve, reject) => {
let filePromise: Promise<File>
if (input instanceof File) {
filePromise = Promise.resolve(input)
} else {
filePromise = new Promise<File>((resolve, reject) => {
input.file(resolve, reject)
})
}
filePromise
.then((file) => {
const reader = new FileReader()
reader.onload = (): void => {
if (typeof reader.result === 'string') {
resolve(reader.result)
} else {
reject(new Error('Expected a string from FileReader.result'))
}
}
reader.onerror = (): void => {
reject(reader.error ?? new Error('Unknown FileReader error'))
}
reader.readAsDataURL(file)
})
.catch((err) => reject(err))
})
}