Порой возникает необходимость преобразовать объект Blob в объект File. Такая ситуация может возникнуть, например, при использовании метода blob() для объекта ответа на выборку. В этом небольшом уроке мы рассмотрим, как осуществить такое преобразование.
Fetch
Приведенный ниже скрипт преобразует ответ на выборку в Blob.
Но что, если нам нужен File?
Основное отличие между Blob и File заключается в наличии у File дополнительных атрибутов, таких как name (имя файла) и свойство LastModified.
Однако File наследует все остальные атрибуты от Blob. Мы можем рассмотреть два варианта: добавить эти два атрибута к объекту Blob, чтобы он стал похожим на File, или же создать настоящий объект File.
Создание Blob похожего на File
Давайте добавим два свойства в наш экземпляр Blob (из нашего запроса на выборку выше).
Наш Blob теперь выглядит как File, но это не настоящий File, это можно легко проверить:
Это может вызвать проблемы, если мы используем это со сторонним сценарием, которому требуется реальный объект File.
Создание настоящего File
Это лучший подход, он даст нам настоящий объект File.
Теперь, когда мы проверим экземпляр, это будет File.
Но поскольку он наследуется от Blob, он также будет Blob.
Почему мы обсудили метод «создание Blob похожего на File»? Поскольку IE11 не поддерживает конструктор файлов, поэтому, если вам все еще нужна поддержка Internet Explorer, это то, что вам нужно.