在添加时从队列中删除文件

时间:2014-03-15 20:22:51

标签: javascript jquery file-upload jquery-file-upload blueimp

我正在使用blueimp的文件上传器。我想这样做,以便用户只能上传一个文件(我无法使用maxNumberOfFiles,因为我没有使用UI插件)。

如何制作它,以便当用户选择要上传的新图像时,它会删除先前在队列中的文件,然后将新图像文件添加到队列中以进行上传?

这是我到目前为止所做的:

$('#fileupload').fileupload({
    dataType: 'json',
    add: function(e, data) {
        var uploadErrors = [];
        var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;

        if (data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {
            uploadErrors.push('Invalid file type.');
        } else if (data.originalFiles[0]['size'] > 1000000) {
            uploadErrors.push('Image over size.');
        }

        if (uploadErrors.length > 0) {
            $('.errors').html(uploadErrors);
        } else {
            data.submit();
        }                    
    },
    progressall: function (e, data) {
        var progress = parseInt(data.loaded / data.total * 100, 10);
        $('.progress .bar').css('width', progress + '%');
    }
});

1 个答案:

答案 0 :(得分:0)

您可以在data.files操作后操作文件数组data.originalFiles / add,按索引取消设置文件,如:

data.files = $.grep( data.files, function( element, index ) {
    return index == 0;
    // or
    // return $.inArray(i, error_uploads_indexes) ==-1; // where error_uploads_indexes is array with files indexes You want to remove
});
// ...
data.submit();

如果可以,您可以设置singleFileUploads: false