Задача: Считать контент файла, преобразовать его в Base64 и отправить на сервер.
Когда в Promise на callback чтения файла я делаю resolve() с преобразованием файла в Base64, видимо он срабатывает раньше, чем файл преобразовывается (похоже из-за размера файла) и на сервер уходит пустая строка.
Как это можно обойти, нужно точно дождаться преобразования и только потом выполнить resolve().
Сторонние плагины из npm тоже не имеют cb после преобразования в строку
https://www.npmjs.com/package/nodejs-base64
function uploadFile(event, cb){
const file = event;
const fileName = path.basename(file);
new Promise((resolve) => {
fs.readFile(`${file}`, {encoding: 'utf8'}, (err, data) =>{
if (err) throw err;
resolve(Buffer.from(data).toString('base64')) // Как здесь дождаться конвертации в BASE64
});
})
.then((encoded) => {
const params = new URLSearchParams();
params.append('secret_key', SECRET_KEY);
params.append('form[file_name]', `${fileName}`);
params.append('form[file_content]', `${encoded}`);
fetch(href, {
method: 'post',
body: params,
timeout: 5000,
})
.then(res => res.json())
.then(json=>{
if(json.status === `ok`){}
})
})
}