Преобразование Blob в список файлов в javascript


Я использую следующий код для скрытия изображения холста в blob.
Чтобы преобразовать blob-объект в объект file / filelist, мне нужно передать этот файловый список обработчику файлов.

Mycode:

var canvas1 = document.getElementById("preview");
var theImage = document.getElementById("blahProfile");
theImage.src = canvas1.toDataURL();
var blob = dataURItoBlob(theImage.src);

Есть ли способ преобразовать этот большой двоичный объект в файловый объект?

1 2

1 ответ:

File объекты содержат больше информации, чем объекты Blob, с такими свойствами, как lastModifiedDate и fileName. Не имеет смысла, чтобы ваши данные изображения имели одно из этих свойств, потому что это не файл.

Я предполагаю, что вы FileList обработчик пользователей a FileReader для чтения File объектов. Однако методы FileReader также могут обрабатывать объекты Blob (поскольку File является подклассом Blob). Таким образом, вы можете либо:

  • Извлеките ваш код FileReader в отдельную функцию, которая принимает Blob или File (и, возможно, функция обратного вызова разрешения) amd вызовет эту функцию при обработке каждого из ваших FileList элементов и при обработке ваших Blob данных изображения

  • Если ваш обработчик FileList обращается только к элементам списка по индексу (например, myFileList[i]), то вы можете подделать FileList просто с помощью массива Blobs. например, эта функция работает либо с реальным FileList, либо с массивом Blobs:

    function processFileList(list) {
        var reader = new FileReader();
        reader.readAsText(list[0]);
        reader.addEventListener("loadend", function() {
            console.log(reader.result);
        });
    }