У меня есть URL-адрес BLOB-объекта, например blob:blahblah
, который указывает на файл. Я хочу записать файл за этим большим двоичным объектом в локальную файловую систему. Документация writer.write()
гласит, что она принимает файловый объект (из input-type-file) и blob. Но он выдает ошибку несоответствия типов при попытке этого
fileEntry.createWriter(function(writer) {
writer.write(blob); //blob is a var with the value set to the blob url
Я знаю, что проблема в том, что blob
не принимается, но я хотел бы знать, как я могу сохранить большой двоичный объект в файловой системе. я создал указанный BLOB-объект ранее в сценарии из файла ввода-типа и сохранил его значение в переменной.
EDIT
Хорошо, я думаю, мне следовало бы дать больше кода.
Сначала я создаю URL-адрес BLOB-объекта и сохраняю его в виде переменной
files[i]['blob'] = window.webkitURL.createObjectURL(files[i]);
files
взят из html-тега input-type-file, и я зациклен на количество файлов. Вы знаете концерт.
затем переменная проходит через несколько сред, сначала через сообщение chrome, передающее api на другую страницу, а затем с этой страницы к работнику через postMessage
и затем, наконец, снова на родительскую страницу через postMessage
снова.
на последней странице я намереваюсь использовать его для хранения файла блоба в локальной файловой системе через api файловой системы, как это ..
//loop code
fileSystem.root.getFile(files[i]['name'], {create: true}, function(fileEntry) {
fileEntry.createWriter(function(writer) {
writer.write(files[i]['blob']);
});
});
//loop code
но writer.write
бросает Uncaught Error: TYPE_MISMATCH_ERR: DOM File Exception 11
Я считаю, что эта ошибка связана с тем, что переменная, переданная в writer.write
, является текстом, а не объектом BLOB-объекта из чего-то вроде createObjectUrl
(напрямую, а не после прохождения через несколько страниц / областей) или не является window.WebKitBlobBuilder
. Итак, как можно использовать URL-адрес блоба для хранения файла?