使用filepicker.io取消正在进行的上传的最佳方法是什么?

时间:2012-10-17 07:08:41

标签: filepicker.io

我正在使用filepicker.makeDropPane来玩一些简单的上传。我在filepicker.io web documentation的文档中找不到的一件事是取消正在进行的上传的方法。

直觉上我觉得onStart函数应该传递一个额外的参数。表示具有cancel()函数的上载的对象,在调用时将立即取消文件上载。这样的东西似乎没有。

2 个答案:

答案 0 :(得分:2)

我们实际上还没有这个功能,但它是有道理的。我将看一下沿着这些方向添加内容并让你知道

答案 1 :(得分:0)

这是一个丑陋的黑客我想出来防止不需要的返回文件以及一些其他花哨的东西围绕进度和多个文件等。你肯定想使用静态js文件包含所以它不会改变你和打破此

在进度处理程序中使用它:

var event = event || window.event;

// For firefox, go and grab the XHR progress event object.                                                                                                                                                                                
if (typeof event == 'undefined' || event == null) {
    if (typeof arguments.callee.caller.arguments[0] == 'object') {
        event = arguments.callee.caller.arguments[0];
    }
    else {
        event = arguments.callee.caller.arguments.callee.caller.arguments.callee.caller.arguments[0];
    }
}

var sUploadId;

     if (event.type.toLowerCase() == 'progress') {
        // if we haven't already tagged this XHR object (one per file), tag it now                                                                                                                                                 
        // if we receive further progress from this file, it will already have been tagged                                                                                                                                                

        if (!('id' in event.currentTarget)) {
            sUploadId = goUploadProgress.files.length;
            event.currentTarget.id = sUploadId;
            goUploadProgress.files.push({id: sUploadId, total:event.total});
        }
        else {
            sUploadId = event.currentTarget.id;
        }

        // get the loaded bytes for this file                                                                                                                                                                                             
        goUploadProgress.files[sUploadId].loaded = event.loaded;
    }
    else {
        // ignore readystatechange events                                                                                                                                                                                                  
        return;
    }

我对此进行了修改以使其更有意义,因此我可能犯了一个逻辑错误,但这就是要点。您可以通过查找调用堆栈在Firefox中获取事件,并且可以为每个文件的XHR上载对象附加一个id,该对象将一直存在,直到完成。

我再说一遍,这是一个黑客!不要相信它不会破裂。