How to convert a file to a byte array.
another way round of below one
let file = new File([myBlob], "name");
file need to convert into a byte stream
How to convert a file to a byte array.
another way round of below one
let file = new File([myBlob], "name");
file need to convert into a byte stream
You can probably try to use FileReader API available in Browser.
let file = new File(...) // this could be from file input or other source
let fileReader = new FileReader();
fileReader.readAsArrayBuffer(file);
fileReader.onload = function(ev) {
const result = ev.target.result;
console.log(result); // here it is
}
According to this answer, if the result from readAsArrayBuffer will not work for you, you may need to convert it to the real byte[] using new Uint8Array. Here is extended version of the above code:
let file = new File(...) // this could be from file input or other source
let fileReader = new FileReader();
fileReader.readAsArrayBuffer(file);
fileReader.onload = function(ev) {
const array = new Uint8Array(ev.target.result);
const fileByteArray = [];
for (let i = 0; i < array.length; i++) {
fileByteArray.push(array[i]);
}
console.log(array); // here it is
}
And here is implementation wrapped in promise for comfortable usage:
function getByteArray(file) {
return new Promise(function(resolve, reject) {
fileReader.readAsArrayBuffer(file);
fileReader.onload = function(ev) {
const array = new Uint8Array(ev.target.result);
const fileByteArray = [];
for (let i = 0; i < array.length; i++) {
fileByteArray.push(array[i]);
}
resolve(array); // successful
}
fileReader.onerror = reject; // call reject if error
})
}
//usage
let file = new File(...)
getByteArray(file).then((byteArray) => {
// do whatever you need
console.log(byteArray);
})
P.S.
If for some reason you can not refer to ev.target, please try to use fileReader.result instead.
fileReader.result solve the issue? P.S. if this answer solved your task, please, mark it as accepted. Thanks.