Преобразование Base64 строки в файловый объект Javascript

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вас интересует сразу конкретное решение, давайте перейдем к делу. Вот как можно конвертировать строку в формате Base64 в файловый объект JavaScript. Не забудьте заменить 'data:image/png;base64,...' на вашу строку Base64:

JS
Скопировать код
function dataURLtoFile(dataurl, filename = 'file') {
  let arr = dataurl.split(','),
      mime = arr[0].match(/:(.*?);/)[1],
      bstr = atob(arr[1]),
      n = bstr.length,
      u8arr = new Uint8Array(n);

  while(n--){
    u8arr[n] = bstr.charCodeAt(n);
  }

  return new File([u8arr], filename, {type: mime});
}

let base64String = 'data:image/png;base64,...'; // Вставьте сюда вашу строку Base64 🎹
let file = dataURLtoFile(base64String, 'image.png');

И готово! Теперь переменная file содержит в себе файловый объект JavaScript.

Работаем с различными типами URL

Функция dataURLtoFile способна обрабатывать разные типы URL, будь то dataURL, blobURL или httpURL. Убедитесь в корректности использования строки URL. 🎵

Превращение URL в файловый объект JavaScript

Если надо преобразовать URL (вне зависимости, blobURL, dataURL или httpURL) в файловый объект JavaScript, ниже приведен пример способа это сделать:

JS
Скопировать код
async function urlToFile(url, filename, mimeType) {
  const response = await fetch(url); // Делаем запрос 🐶
  const buffer = await response.arrayBuffer(); // Получаем буфер данных 🐠

  return new File([buffer], filename, {type: mimeType});
}

Вышеуказанная функция позволит вам без труда превратить URL в файловый объект.

Безопасность превыше всего

При работе со строками Base64 обязательно проводите их валидацию, прежде чем начинать обработку. Это схоже с проверкой дороги перед переходом – лучше быть перестрахованным. 🚦 В среде Node.js для декодирования Base64 рекомендуется использовать Buffer.from(base64, 'base64') вместо atob().

Используем Async

Используйте async/await вместе с fetch API для оптимизации и повышения читаемости вашего кода. Это поможет гибко управлять асинхронными операциями. 🧹

Визуализация

Процесс преобразования строки Base64 в файловый объект JavaScript можно представить следующим образом:

Строка Base64 --> Blob --> Файловый объект JavaScript
      🏷️           💾           🗂️

Следуя принципу, что лучше один раз увидеть, чем сто раз услышать, icons визуализация отлично подходит для быстрого понимания процесса. 😎

Направления современных техник преобразования

Для успешного проведения процесса преобразования, старайтесь использовать продвинутые техники:

  • Всегда указывайте имя файла и тип содержимого при создании нового объекта.
  • Рассмотрите возможность использования библиотеки base64-arraybuffer для кодирования и декодирования, если вы стремитесь к профессионализму. 🕴️
  • Для обработки больших строк Base64 используйте методы, которые не блокируют основной поток, такие как Buffer, или обращайтесь к потоковому приему и передачи данных на стороне сервера.

Усовершенствование функции преобразования

Для повышения надежности вашей функции преобразования следует добавить в нее следующие улучшения:

  1. Обработка ошибок: Используйте блоки try/catch для перехвата и обработки возникающих ошибок. 🦹‍♂️

  2. Оптимизация: Непрерывно работайте над повышением производительности и уменьшением потребления памяти вашего приложения.

Полезные материалы

  1. Создание Blob из строки base64 в JavaScript на Stack Overflow — для осмысления процесса создания Blob.
  2. Blob: конструктор Blob() – Web API на MDN — официальное руководство MDN.
  3. FileReader – Web API на MDN — подробное руководство по использованию FileReader.
  4. JavaScript: Преобразование base64 в Blob на GitHub — практический пример превращения base64 в Blob.