Reputation: 47
Error in reactJS using drop-zone to receive files and replace them with byte buffers
TypeError: First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.
onDrop = async (file) => {
try {
console.log(file.name);
let reader = new window.FileReader();
reader.readAsArrayBuffer(file); // <<== Error occurred here
const buffer = await Buffer.from(reader.result);
console.log(buffer.length);
} catch (error) {
console.log(error);
}
how can i fix this .. please help
Upvotes: 1
Views: 917
Reputation: 15851
Hi mate there was several issues in your code, checkout:
function readFileAsync(file) {
return new Promise((resolve, reject) => {
let reader = new FileReader();
reader.onload = () => {
resolve(reader.result);
};
reader.onerror = reject;
reader.readAsArrayBuffer(file);
})
}
const readURL = async (input) => {
try {
const file = input.files[0]; // this is where your file data is
console.log(file.name);
let contentBuffer = await readFileAsync(file);
console.log(contentBuffer.byteLength); // Length in ArrayBuffer
} catch (error) {
console.log(error);
}
}
<input type='file' id="upload" onchange="readURL(this)" />
Upvotes: 1