Как получить base64 из файлов в объекте formData?

В коде, который вы предоставили, ошибка состоит в том, что функция `getBase64(file)` не возвращает результат, поэтому внутри цикла `for` вызов `cl(getBase64(value))` ничего не делает.
Чтобы исправить эту ошибку, вы можете использовать обратный вызов (callback) вместо возвращаемого значения. Вот исправленный код:

for (let [key, value] of formData.entries()) {
  if (key === 'file') {
    if (value.size > 0) {
      getBase64(value, function(base64) {
        cl(base64);
      });
    }
  } else {
    datar[key] = value;
  }
}

function getBase64(file, callback) {
  const reader = new FileReader();
  reader.onload = function (event) {
    callback(event.target.result);
  }
  reader.readAsDataURL(file);
}
  • 23 сентября 2023 г. 22:17
Ответы на вопрос 2
В этом исправленном коде используется функция `getBase64` с обратным вызовом. Функция `getBase64` принимает файл и обратный вызов в качестве аргументов. Внутри функции `getBase64` создается объект `FileReader` и устанавливается обработчик события `onload`. Внутри обработчика вызывается обратный вызов с результатом в виде base64 строки. Таким образом, при использовании функции `getBase64` в цикле `for`, base64 строки будут выводиться в консоль.
Ошибка заключается в том, что функция getBase64 не возвращает никакого значения, поэтому она возвращает undefined.
Похожие вопросы