无法使用xhr2和Web worker上传文件和变量

时间:2013-08-26 14:23:08

标签: javascript html5 upload web-worker xmlhttprequest-level2

我尝试创建使用XHR2和Web worker上传文件的代码。 我以为我应该使用网络工作者,所以如果文件很大,网页就不会冻结。

这不起作用有两个原因,我之前从未使用过网络工作者,我希望同时使用相同的xhr向服务器发布文件和变量。当我说vars时,我指的是文件的名称,以及一个int。

Heres是我得到的

客户端

//create worker
var worker = new Worker('fileupload.js');
 worker.onmessage = function(e) {
 alert('worker says   '+e.data);
}

//handle workers error
worker.onerror =werror;
function werror(e) {
  console.log('ERROR: Line ', e.lineno, ' in ', e.filename, ': ', e.message);
 }

//send stuff to the worker
 worker.postMessage({
 'files' : files, //img or video
 'name' : nameofthepic, //text
 'id':imageinsertid //number
 });

在worker(fileupload.js文件)中

onmessage = function (e) {var name=e.data.name; var id=e.data.id ; var file=e.data.files;

//create a var to catch the anser of the server
var datax;

      var xhr = new XMLHttpRequest();
               xhr.onload = function() {      
           if (xhr.status == 200) {datax=xhr.response;}
                   else { datax=525;}//actually, whatever, just give a value
        };
      xhr.open('POST', 'upload.php');                               

          xhr.send(file,name,id);
          //i also tried xhr.send('file=file&name=name&id=id');  and still nothing
          //i also tried  just the text/int xhr.send('name=name&id=id'); and still nothing

我很困惑。我无法向服务器发送任何内容。我得不到工人的反馈。我甚至不知道数据是否发送到fileupload.js。服务器端没有INSERT。

这可能,同时发送文件和文本吗?我错过了什么?

我需要将文本和int与文件一起传递,因此服务器端不仅会上传文件,而且如果文件成功上传,还会将int和文本INSERT到数据库。使用formData和xhr这很容易,但是,将Web工作者放在中间,我无法正确使用。

另外,我可以使用Transferable Objects加快速度吗?所有主流浏览器都支持Transferable对象吗?

提前致谢

0 个答案:

没有答案