我有一个像blob:blahblah那样的blob url,它指向一个文件。我想把这个blob后面的文件写到本地文件系统中。writer.write()文档表示它接受一个文件对象(来自输入类型文件)和一个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并将其存储在一个var中,如下所示
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。那么,如何使用blob的url来存储文件呢?
发布于 2011-10-11 16:42:55
根据您编辑的代码片段和描述,听起来像是在将blobURL写入文件系统,而不是File本身(例如,files[i]['name']是一个URL)。相反,将File对象传递到主页->其他页-> worker ->主页之间。最近(至少在Chrome中),您的往返现在是可能的。File对象可以传递给window.postMessage(),而在此之前,浏览器将参数序列化为字符串。
您可以使用createObjectURL()来“设计”一个处理程序/引用一个createObjectURL()。从blobURL返回到Blob实际上没有一条路可走。因此,简而言之,不需要创建createObjectURL()。直接通过files[i]就行了。
https://stackoverflow.com/questions/7631947
复制相似问题