我的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()
会因为选择了图像而多次被触发。