Преобразование 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 ответ:
File
объекты содержат больше информации, чем объектыBlob
, с такими свойствами, какlastModifiedDate
иfileName
. Не имеет смысла, чтобы ваши данные изображения имели одно из этих свойств, потому что это не файл.Я предполагаю, что вы
FileList
обработчик пользователей aFileReader
для чтенияFile
объектов. Однако методыFileReader
также могут обрабатывать объектыBlob
(посколькуFile
является подклассомBlob
). Таким образом, вы можете либо:
Извлеките ваш код
FileReader
в отдельную функцию, которая принимаетBlob
илиFile
(и, возможно, функция обратного вызова разрешения) amd вызовет эту функцию при обработке каждого из вашихFileList
элементов и при обработке вашихBlob
данных изображенияЕсли ваш обработчик
FileList
обращается только к элементам списка по индексу (например,myFileList[i]
), то вы можете подделатьFileList
просто с помощью массиваBlob
s. например, эта функция работает либо с реальнымFileList
, либо с массивомBlob
s:function processFileList(list) { var reader = new FileReader(); reader.readAsText(list[0]); reader.addEventListener("loadend", function() { console.log(reader.result); }); }