如何从Fine-uploader中的分块成功端点引发onError

时间:2016-07-10 14:18:44

标签: fine-uploader

在我的应用程序中,当chunking-success-endpoint返回类似{"error": "reason..."}的JSON时(例如服务器无法将块重新组合在一起),onError事件未被调用。

只是为了澄清,如果单个块失败,则会调用onError事件 。这是我遇到问题的最终成功请求。

我不确定我错过了什么。我应该以其他方式处理这个问题吗?

我的配置如下。提前谢谢!

    var uploader = $('#fine-uploader').fineUploader({
        template: 'qq-template',
        debug: true,
        callbacks: {
            onAllComplete: function(succeeded, failed) {
                $('#doclib_tree').jstree(true).refresh()
                if (failed.length > 0) {
                    alert("Error: Some files were not uploaded");
                } else {
                    if (succeeded.length > 0 ) {
                        alert("Successfully uploaded " + succeeded.length + " file(s)");
                    }
                    this.reset();
                    toggle_upload();
                }
            },
            onError: function(id, name, errorReason, xhrOrXdr) {
                alert("Error uploading " + name + ".  Reason: " + errorReason)
            },
            onSubmit: function(id, name) {
                var promise = new qq.Promise();
                var dest = document.getElementById('dest_label').innerHTML.replace(/ > /g, "/")
                $.ajax({
                    'type': 'POST',
                    'async': false,
                    'url': "/documents/exists" ,
                    'data': {
                        'parents' : get_path(dest),
                        'name': name,
                    },
                    'success': function(data, textStatus, jqHXR) {
                        if ( check_session(data) ) {
                            promise.failure();
                        } else {
                            if (confirm("The file '" + dest + "/" + name + "' already exists.  Replace?"))
                                promise.success();
                            else
                                promise.failure();
                        }
                    },
                    'error': function(jqHXR, textStatus, errorThrown) {
                        promise.success();
                    }
                });
                return promise;
            },
        },
        chunking: {
            enabled: true,
            partSize: 20000000, // 20MB
            success: {
                endpoint: "documents/upload?success=1",
            }
        },
        resume: {
            enabled: true,
            recordsExpireIn: 1, // 1 day
        },
        request: {
            endpoint: "/documents/upload",
        },
        autoUpload: true
    });

1 个答案:

答案 0 :(得分:0)

从分块成功部分下的文档:

  

要成功回复,您可以返回状态为200-204的空体。任何其他状态代码都被确定为失败。

换句话说,要指示失败,您必须返回指示失败的状态代码。根据错误的上下文选择最合适的状态代码。此时,Fine Uploader应该以某种方式确定文件已失败,并且将使用服务器返回的onError属性调用error处理程序。