为什么进度没有被触发?

时间:2012-07-20 16:02:32

标签: javascript file-upload upload

我有一个文件上传器可以工作,因为文件和变量正在上传,并且完成处理程序在上传完成时被触发..但是进度处理程序不是..任何想法为什么不? ..问候

    function uploadFile_function(){
    var formData = new FormData();
    formData.append("var1", "jane"); 
    formData.append("varFile", fileToUpload);

    var xhr = new XMLHttpRequest();
    xhr.open("POST", "upload.php");  

    xhr.addEventListener("progress", function (ev) {
        alert('progress');
    }, false);

    xhr.addEventListener("load", function (ev) {
        alert('complete');
    }, false);

    xhr.send(formData);
}

2 个答案:

答案 0 :(得分:1)

您需要调用事件监听器before calling xhr.open

答案 1 :(得分:1)

下载和上传传输都存在进度事件。下载事件在XMLHttpRequest对象本身上触发,如上面的示例所示。上传事件在XMLHttpRequest.upload对象上触发,如下所示:

function uploadFile_function(){
    var formData = new FormData();
    formData.append("var1", "trip"); 
    formData.append("varFile", fileToUpload);

    var xhr = new XMLHttpRequest();

    xhr.upload.addEventListener("progress", function (ev) {
        alert('progress');
    }, false);

    xhr.upload.addEventListener("load", function (ev) {
        alert('complete');
    }, false);

    xhr.open("POST", "upload.php");  
    xhr.send(formData);
}