我有一个像blob:blahblah
这样的blob网址指向一个文件。我想将此blob后面的文件写入本地文件系统。 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存储到文件系统中。我在输入类型文件的脚本中创建了前面的blob,并将其值存储在var中。
修改
好的,我想我应该首先提供更多代码。
首先我创建一个blob url并将其存储在像这样的
中files[i]['blob'] = window.webkitURL.createObjectURL(files[i]);
files
来自输入类型文件html标记,我循环了多少个文件。你知道这个演出。
然后变量通过多种媒介,首先通过chrome的消息将api传递到另一个页面,然后通过postMessage
从该页面传递给工作人员,然后通过postMessage
最终返回到父页面试。
在最后一页上我打算用它来通过像这样的文件系统api将blob的文件存储到本地文件系统..
//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
的变量是一个文本而不是像createObjectUrl
这样的blob对象(直接而不是在经过多个页面/范围之后)或者不是window.WebKitBlobBuilder
{1}}。那么如何使用blob的url来存储文件呢?
答案 0 :(得分:1)
根据您编辑的代码段和说明,听起来您正在将blobURL写入文件系统而不是File
本身(例如files[i]['name']
是URL)。而是在主页 - >之间传递File
对象。其他页面 - >工人 - >主页。截至最近(至少在Chrome中),您的往返行程is now possible。 File
个对象可以传递给window.postMessage()
,而之前,浏览器将参数序列化为字符串。
使用Blob
''塑造'createObjectURL()
的处理程序/引用。没有办法从blobURL回到Blob
。简而言之,无需创建createObjectURL()
。只需直接传递files[i]
即可。