我正在尝试与Web Workers一起提高文件上传性能。我正在处理这篇文章中有关上传大文件的示例。我有一个(某种程度上)更完整的代码示例,该示例可在Chrome(36.0.1985.143)和Safari(7.0.3(9537.75.14))中工作,而在Firefox(31.0)中则无法工作。我没有共享的服务器代码,但是客户端代码足以查看浏览器是否在推动切片。根据MDN,File和FileList都是可克隆的对象,所以这是Firefox中的错误吗?
原始链接来自StackOverflow 上的这篇文章。
在Firefox中,我遇到了一个错误:
(DataCloneError:无法克隆该对象。)
在这条线上:
worker.postMessage({
'files' : files
});
Run Code Online (Sandbox Code Playgroud)
代码如下:
index.html
<html>
<head>
<script>
var worker = new Worker('fileupload.js');
worker.onmessage = function(e) {
alert(e.data);
}
worker.onerror = werror;
function werror(e) {
console.log('ERROR: Line ', e.lineno, ' in ', e.filename, ': ', e.message);
}
function handleFileSelect(evt) {
evt.stopPropagation();
evt.preventDefault();
var files;
if(evt.dataTransfer === undefined ){
files = document.getElementById('files').files;
}else{
files = evt.dataTransfer.files||evt.target.files;
}
// FileList object.
worker.postMessage({
'files' : files
});
//Sending …Run Code Online (Sandbox Code Playgroud)