当其中一个选定文件不是图像时,Blueimp / jQuery文件上传autoUpload失败

时间:2015-06-05 10:59:58

标签: jquery jquery-file-upload blueimp

我的acceptFileTypes选项是标准/(\.|\/)(gif|jpe?g|png)$/i。问题是,仅当所有选定文件都是gifs/jpgs/pngs时,autoUpload才会正确触发。如果文件不是图像,则autoUpload不会触发。

jqXHR = $('#button').fileupload({
    url: uploadURL,
    dataType: 'json',
    formData: {
        'data': myData
    },
    autoUpload: true,
    sequentialUploads: true,
    singleFileUploads: false,
    acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
    disableImageResize: true,
    previewMaxWidth: 240,
    previewMaxHeight: 240,
    previewThumbnail: false,
    previewCanvas: true,
    previewCrop: true
})
.on('fileuploadadd', function(e, data) {
    //nothing here
})
.on('fileuploadprocessalways', function(e, data) {
    var index = data.index,
        file = data.files[index];
    if (file.error) {
        console.log(file.error);
    }
    else {
        var node = $('<li/>').addClass('node').prependTo($(data.context)),
            inner = $('<div/>').addClass('node-inner').appendTo(node),
            controls = $('<div/>').addClass('node-controls').appendTo(inner);
        if (file.preview) {
            inner.append(file.preview);
        }
        inner.append(nodeProgress.clone());
        controls.append(cancelBtn.clone(true).data(data));
    }
});

我对所有建议持开放态度。基本上我希望用户选择文件,一旦选择,它将开始上传。我尝试将autoUpload设置为false并在fileuploadadd中手动执行所有验证和错误处理,但问题是当我执行data.files.splice(index, 1);时会抛出各种错误。我猜这是因为数组指针搞砸了,编写脚本来处理它。我也尝试在每次选择图像时手动触发data.submit(),这对我来说非常愚蠢,因为data.submit()会因为选择了图像而多次被触发。

0 个答案:

没有答案