7

我只有一个带有一些输入字段和一个文件输入字段的普通表单。我使用 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?)似乎不是最好的方法(我认为它很脏),因为仅仅取消绑定点击事件仍然不能解决收集问题所有先前选择的文件(某种内存泄漏)

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

4

1 回答 1

8

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

...

add: function (e, data) {

        $('#upload_button').unbind('click');
        data.context = $('#upload_button').bind('click', function () {
                    ...
                    data.submit();
        }
}
于 2013-05-03T19:01:45.690 回答