首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >blob API:使用blob编写数据

blob API:使用blob编写数据
EN

Stack Overflow用户
提问于 2011-10-03 07:05:44
回答 1查看 6.9K关注 0票数 4

我有一个像blob:blahblah那样的blob url,它指向一个文件。我想把这个blob后面的文件写到本地文件系统中。writer.write()文档表示它接受一个文件对象(来自输入类型文件)和一个blob。但是,当尝试以下操作时,它会引发类型错配错误。

代码语言:javascript
复制
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中,如下所示

代码语言:javascript
复制
files[i]['blob'] = window.webkitURL.createObjectURL(files[i]);

files来自输入类型文件html标记,我被循环以获得文件数量.你知道演出的。

然后,变量通过许多媒介,首先通过chrome的消息将api传递到另一个页面,然后通过postMessage从该页面传递给工作人员,然后再通过postMessage返回到父页面。

在最后一页中,我打算使用它通过文件系统api将blob的文件存储到本地文件系统。

代码语言:javascript
复制
//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来存储文件呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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]就行了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7631947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档