唯一标识上传

时间:2015-06-17 04:49:57

标签: javascript html5

我使用以下代码上传文件:

var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.open("POST", requestUrl, true);
xhr.send(f);

请注意,我附加了一个监听器来上传进度:

function uploadProgress(evt)
{
    // Which upload was it?
}

问题是,如果我同时发生多次上传,并且他们正在共享相同的事件处理程序,我该如何确定哪个上传触发了该事件?

1 个答案:

答案 0 :(得分:1)

尝试将其包装为控件?

var uploadProgress = function(uploadObj, event) {
  // Do somthing about uploadObj
}

// Target maybe object or string, whatever you want
var Uploader = function(target) {
  var xhr = new XMLHttpRequest();
  var handler = uploadProgress.bind(this, target);
  xhr.upload.addEventListener("progress", handler, false);
  xhr.open("POST", target, true);
  xhr.send(f);
}

.bind将返回一个新函数,当执行新函数时,它会' ll:

  1. 在此处使用this,将上传器作为其上下文。
  2. 执行uploadProgress并传递target作为第一个参数,因此progess事件给出的evt将传递给uploadProgress中的第二个参数。