上传后BlueImp JQuery上传不清除文件队列

时间:2014-12-01 09:35:26

标签: jquery ajax file-upload upload blueimp

我有两个问题,可能是相关的。我正在使用BlueImp的上传插件将多个文件上传到ASP.NET MVC控制器,然后返回所需的JSON响应。点击按钮即可触发上传。

我希望上传者为每个上传的项目添加一个列表项<ul>(工作正常)。然后我想刷新一个列表,显示成功上传的文件。问题是即使在成功上传之后,“老人”也会成功上传。文件保留在控件中。

例如,如果我成功上传了两个文件,那么当我想再上传两个文件时,会有四个文件被发送到控制器。

第二个问题是我使用progressall回调来监视所有文件上传的时间。由于某种原因,应该在回调中执行的代码没有被执行。代码注释以指示问题发生的位置。

我怀疑控件没有识别上传已经完成,因此没有执行成功的上传代码,然后没有清除文件的问题。我不知道为什么!

$('.filemanager-browse').fileupload({
            url: '/Files/UploadFile',
            dataType: 'json',
            singleFileUploads: false,
            add: function (e, data) {

                var queue = $("ul.queue");

                $(".upload-button").click(function () {

                    $.each(data.files, function (index, file) {
                        var queueItem = $("<li>Uploading: " + file.name + "</li>");
                        data.context = queueItem.prependTo(queue);
                    });

                    data.submit();
                });
            },
            progress: function (e, data) {

                $.each(data.files, function (index, file) {
                    /// Code to indicate the progress of individual uploads as the progress. Working fine.
                });

            },
            done: function (e, data) {

                $.each(data.files, function (index, file) {
                    /// Code to indicate that each file has been uploaded. Working fine.
                });

            },
            error: function (e, data) {

                $.each(data.files, function (index, file) {
                    /// Code to indicate any errors.
                });
            },
            progressall: function (e, data) {

                if (data.loaded == data.total) {
                    // SOURCE OF PROBLEM 2: 
                    // CODE IN HERE NOT EXECUTING AFTER SUCCESSFUL UPLOAD
                }
            },
            always: function (e, data) {

            },
            stop: function (e, data) {
                // Should code that is in progress all be in here instead?
             }
        });

1 个答案:

答案 0 :(得分:1)

我最终这样做了:

$('#fileupload').fileupload()
  .bind('fileuploadadd', function(e, data) {
    $(".files tr").remove();
  });

因此,每当有人添加文件时,表格中的所有行都包含类&#39;文件&#39;从DOM中删除。根据您的标记,您可能需要选择要删除的不同元素。