This is my function:
/**
* Convert file to base64 by FileReader.
*
* @param file File object.
* @return Promise of result.
*/
export function getBase64(file: File): Promise<FileReader['result'] | ProgressEvent<FileReader>> {
return new Promise((res, rej) => {
const reader = new FileReader()
reader.readAsDataURL(file)
reader.onload = () => res(reader.result)
reader.onerror = error => rej(error)
})
}
I know the key is create a File
object but don't know how to.
Some update:
the key of this problem is how to use constructor of File
object.
See: https://developer.mozilla.org/en-US/docs/Web/API/File/File
This is how I did it
test('should return base64 string', async () => {
const file = new File([''], 'file');
await expect(getBase64(file)).resolves.toContain('data:application');
});
test('should fails with an error', async () => {
await expect(getBase64({} as File)).rejects.toThrowError();
});