当我加载dropzone.js组件时,我按照How do I preload images into dropzone.js中的描述预加载一组图像。我的问题是我需要将最大上传量限制为5张图片,但是dropzone不会计算我预加载的图片,因此我可以上传"更多的图片"。如何解决?
答案 0 :(得分:3)
这对我有用
var myDropzone = new Dropzone("#div",{
addRemoveLinks: true,
maxFiles: 5,
init: function() {
var thisDropzone = this;
$.getJSON('/upload', function(data) { // get the json response
$.each(data, function(key,value){ //loop through it
var mockFile = { name: value.name, size: value.size };
thisDropzone.options.addedfile.call(thisDropzone, mockFile);
thisDropzone.options.thumbnail.call(thisDropzone, mockFile, value.url);
thisDropzone.files.push(mockFile)
});
});
}
});
myDropzone.on("maxfilesexceeded", function(file) {
this.removeFile(file);
})
myDropzone.on("addedfile", function(file) {
if(this.files.length > 5){
for(var i=maxScreenshots;i<=this.files.length;i++)
this.removeFile( this.files[i] )
alert("Maximum 5 Screenshot can be added")
return;
}
});
答案 1 :(得分:1)
我在相当一段时间内遇到了同样的问题,在研究插件后,我找到了解决问题的方法。在尝试预加载现有图像时,您必须向模拟对象添加一个名为“accepted:true”的键,如下所示:
var mockFile = { name: value.name, size: value.size, accepted: true };
发生这种情况的原因是因为this.getAcceptedFiles()方法检查文件对象上的接受键。如果您预先加载图像,则必须将其作为对象的一部分包含在内,以便插件知道图像被接受并且是图像总量的一部分。
我希望它适用于所有人!
让我知道它是否会破坏其他任何地方...
答案 2 :(得分:0)
你需要将maxFiles设置为5.进一步搜索网络,发现一旦maxFiles达到规定的文件数,就会在主元素中添加一个类dz-max-files-reached
。有了这个新功能,您现在可以在课堂上进行操作。这是更改项https://github.com/enyo/dropzone/issues/28