为什么Blueimp的JQuery文件上传添加所有上一页。即使在init上设置了选项[replaceFileInput:false]和[maxNumberOfFiles:1],也会选择文件?

时间:2013-05-02 19:26:40

标签: jquery file-upload xmlhttprequest blueimp

我只有一些输入字段和一个文件输入字段的普通表单。 我使用Blueimp的Jquery File Upload插件上传文件。它似乎工作,如果您选择一个文件,然后单击上传按钮。但是,如果您重新选择要上传的文件,它会保存所有选择的史前文章,并在上传后将所有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
        }
    });
});

我在这里找到的解决方案(How to upload a file only once with blueimp file upload plugin?)似乎不是最好的方式(我认为它很脏),因为解锁click事件仍然无法解决收集所有以前选择的文件的问题(一种内存泄漏)

选项maxNumberOfFiles: 1对我不起作用。

1 个答案:

答案 0 :(得分:8)

我遇到了同样的问题,我的解决方案是取消绑定我的按钮的click事件,并在调用add事件时将其绑定回来。试试这个。

...

add: function (e, data) {

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