我正在使用blueimp上传文件。它的工作正常。但我想上传一定宽度/高度的图像。 我试着按照这个链接 blueimp fileupload - check the image width and height before upload 文件只有这个数据
lastmodified:1502124635085
name:name.jgp
size:111111
type:"image/jpeg"
但缺少宽度和高度 以下是代码的一部分
add: function (e, data) {
if (e.isDefaultPrevented()) {
return false;
}
console.log(data.files[0]);
var $this = $(this),
that = $this.data('blueimp-fileupload') ||
$this.data('fileupload'),
options = that.options;
data.context = that._renderUpload(data.files)
.data('data', data)
.addClass('processing');
options.filesContainer[
options.prependFiles ? 'prepend' : 'append'
](data.context);
that._forceReflow(data.context);
that._transition(data.context);
data.process(function () {
return $this.fileupload('process', data);
}).always(function () {
data.context.each(function (index) {
$(this).find('.size').text(
that._formatFileSize(data.files[index].size)
);
}).removeClass('processing');
that._renderPreviews(data);
}).done(function () {
data.context.find('.start').prop('disabled', false);
if ((that._trigger('added', e, data) !== false) &&
(options.autoUpload || data.autoUpload) &&
data.autoUpload !== false) {
data.submit();
}
}).fail(function () {
if (data.files.error) {
data.context.each(function (index) {
var error = data.files[index].error;
if (error) {
$(this).find('.error').text(error);
}
});
}
});
},
是获取文件数据还是其他位置的正确位置。 感谢
答案 0 :(得分:1)
您可以将已降低成本的process action
添加到默认process queue
中
以下示例仅允许1920x1080的图像通过。将跳过非图像文件。
FileReader
仅支持IE10 +
$.blueimp.fileupload.prototype.options.processQueue.push({action: 'validateImage'});
// add a customised validator for image width for height, 1920x1080
$.widget('blueimp.fileupload', $.blueimp.fileupload, {
processActions: {
validateImage: function(data) {
var dfd = $.Deferred();
var file = data.files[data.index];
if( !/(\.|\/)(gif|jpe?g|png)$/i.test(file.name)){
dfd.resolveWith(this, [data]);
}
else {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function() {
var image = new Image();
image.src = reader.result;
image.onload = function() {
if(this.width !== 1920 || this.height !== 1080) {
data.files.error = true
file.error = 'Image have to be 1920x1080';
dfd.rejectWith(this, [data]);
}
else {
dfd.resolveWith(this, [data]);
}
}
};
}
return dfd.promise();
}
}
});