Saturday, 14 July 2018

Fs write file in a for loop

I need to convert & write each base64 string from an array to a different file by using fs.writeFile but only the last array element is saved. Have a look at my code below :let receivedData =["iVBORw0KGgoAAAANSUhEUgAABM...", "4AAANiCAYAAACZ8IVOAAAKqGlDQ1BJQ0MgU..."]://decode base 64 to bufferlet decodeBase64 = (dataArray) => { let result = [];dataArray.forEach((element) => { result.push(Buffer.from(element, 'base64')); }) return result; //array };let writeFileAsync = (data) => { let filename = Date.now() + '.jpeg'; return new Promise((resolve, reject) => { data.forEach((value) => { fs.writeFile(filename, value, (err) => { if(err){ reject(err); } else { console.log('file is saved'); resolve(value); } }) }) }let decoded = decodeBase64(receivedData);writeFileAsync(decoded) .then((result) => { console.log('file is saved'); }) .catch((error) => { console.log(error); })the last value of receivedData is saved to filesystem but not the first element I know it has something to do with doing async method in a loop and maybe something else. The loop just imcrement before writefile finishes.Any helps/tips would be appreciated thx

Submitted July 14, 2018 at 09:08AM by Surikaate

No comments:

Post a Comment