logo

Перевод Blob в файловый формат в JavaScript для NodeJS

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

Чтобы преобразовать объект Blob в объект File в JavaScript, используйте File конструктор, передав ему сам blob и название файла:

JS
Скопировать код
// Учтите, что такой blob действительно существует
const blob = new Blob(["unicorns_exist"], { type: 'text/plain' });
// Это наиболее простой и быстрый способ конвертировать blob в файл
const file = new File([blob], "unicorns.txt", { type: blob.type, lastModified: Date.now() });

Объект File, созданный из этого Blob, получит имя "unicorns.txt".

Преобразование Blob: процесс подробно

Blob — это в некотором роде анонимный файл, как группа без солиста. Дадим ему имя и метаданные.

JS
Скопировать код
// Ваш blob, нетерпеливо ожидает быть преобразованным в файл
const blob = new Blob(["blob_contents"], { type: 'application/octet-binary' });

// Присваиваем ему эффектное имя и дату создания
const blobToFile = (blob, filename) => new File([blob], filename, {
  type: blob.type,
  lastModified: new Date()
});

// Итак, представляем ваш blob...
// Барабанная дробь... и вот он!
const file = blobToFile(blob, 'datafile.bin');

// Теперь ваш blob превратился в настоящий файл
console.log(file);

Работа с Blob: глубокое погружение и потенциальные трудности

Проверка Blob перед конвертацией

Убедитесь, что ваш Blob не является "призраком" среди объектов — он не должен быть пустым. Всегда стоит проверить, содержит ли Blob данные, перед тем как конвертировать его в File.

Преимущества TypeScript

В TypeScript можно указывать тип объекта Blob как File, что позволяет использовать преимущества статической типизации:

typescript
Скопировать код
// Чары типизации в TypeScript
const castBlobToFile = (blob: Blob, filename: string): File => blob as File;

Тщательное управление ошибками

Реализуйте обработку ошибок для ситуаций, когда Blob не может быть преобразован из-за повреждения данных или несовершенной поддержки API File.

Переиспользование кода: инкапсуляция преобразования

Чтобы избежать повторения кода, лучше завернуть логику преобразования Blob в File в функцию.

JS
Скопировать код
// Эликсир превращения
function convertBlobToFile(blob, filename) {
  if (!blob.size) throw new Error("Ошибка: Blob пуст");
  const fileType = blob.type || "octet/stream";
  try {
    return new File([blob], filename, { type: fileType, lastModified: Date.now() });
  } catch (error) {
    console.error("Ой, кажется, у нас проблема!", error);
  }
}

Эта функция проводит дополнительную проверку на пустоту Blob и использует стандартный MIME-тип, если конкретный MIME-тип не указан.

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

  1. Blob: конструктор Blob() – Веб-API | MDN — информация о конструкторе Blob.
  2. File: конструктор File() – Веб-API | MDN — подробная инструкция, как конвертировать Blob в File с помощью конструктора File.
  3. node.js – Как преобразовать Blob в File в JavaScript – Stack Overflow — обсуждение конвертирования Blob в File на форуме вопросов и ответов.
  4. Blob — глубокое руководство по работе с Blob и File в JavaScript.
  5. File System Access API: упрощение доступа к локальным файлам | Возможности | Chrome для разработчиков — обзор File System Access API.