为什么Blueimp的JQuery的文件上传添加的所有分组。 选择的文件,即使选择[replac

2019-09-01 19:10发布

我有一些输入字段和一个文件输入字段只是正常的形式。 我用的是Blueimp的jQuery的文件上传插件上传文件。 它似乎工作,如果你选择一个文件,之后点击上传按钮。 但是,如果你重新选择要上传的文件,这样可以节省选择所有的史前史和上传后发送的所有XHR时到服务器。

我要上传只有一个当前选定的文件, 并不是所有之前选择的文件(文件打开对话框)。

这是我的js模块来处理上传:

$(function () {
    $('#upload_form').fileupload({

        dataType: 'json',
        autoUpload: false,
        fileInput: '#filechose_button',
        replaceFileInput: false,
        maxNumberOfFiles: 1,
        multipart: true,

        add: function (e, data) {

            $('#upload_button').click(function () {

                $('#upload_button').attr('disabled', true);
                ...
                data.submit();
                ...
            });
        },

        done: function (e, data) {
          ... // successfully uploaded
        },

        progressall: function (e, data) {
          ... // update a progress bar
        }
    });
});

我发现这里的解决方案( 如何使用blueimp文件上传插件上传文件只有一次? )似乎不是最好的方法(我认为这是肮脏的),因为刚刚解除绑定click事件仍然不能解决收集的问题以前选择的所有文件(一种内存泄漏)

选项maxNumberOfFiles: 1不适合我的工作。

Answer 1:

我有同样的问题,我的解决办法是取消绑定我的按钮的单击事件,并将其绑定回每当添加事件被调用。 试试这个。

...

add: function (e, data) {

        $('#upload_button').unbind('click');
        data.context = $('#upload_button').bind('click', function () {
                    ...
                    data.submit();
        }
}


文章来源: Why Blueimp's JQuery File Upload add all prev. selected files even if options [replaceFileInput: false] and [maxNumberOfFiles: 1] are set on init?