我想使用同步的JS FileSystem API,因此,必须将此代码放到webworker上。 webworker的传入数据来自dragndrop事件(dataTransfer.items),以便能够使用chromes最新的capabilitiy来上传文件夹。 遗憾的是,每次尝试都被Chrome取消,并显示“未捕获错误:DATA_CLONE_ERR:DOM例外25”。
基本上,就像这样: var files=e.dataTransfer.items; [copying the DataTransferItemList]
var worker=new Worker(...)
worker.postMessage(files);
这不起作用。任何想法,为什么? 可以在这里找到类似(但不是100%相同)的例子:http://www.html5rocks.com/en/tutorials/file/filesystem-sync/ - 这似乎有效。它不是DataTransferItemList,它是一个FileList - 不能将这种类型的List序列化吗?
谢谢, 克里斯托弗
答案 0 :(得分:0)
您应该使用event.dataTransfer.files
来获取FileList
。然后你可以直接发布给工人:
var files=e.dataTransfer.files || e.target.files; // Cross browser FileList
var worker=new Worker(...);
worker.postMessage({files: files});