我正在使用dropzone将图片上传到图库。我是按钮提交的。是否可以防止两次添加同一文件?我不确定是否检查名称或名称和大小。这是我的代码:
<script>
var i = 0;
Dropzone.options.myDropzone = {
init: function() {
this.on("addedfile", function(file) {
i=++i;
检查其他文件的文件名和文件大小
----------->if(){
myDropzone.removeFile(file);
}
var inputs = Dropzone.createElement('<div class="dz-image-metadata"><label for="'+i+'_title">Nazov</label><input type="hidden" name="'+i+'_filename" value="'+file.name+'"><input type="text" name="'+i+'_title" value="'+file.name+'" /><label for="">Popis</label><input type="text" name="'+i+'_desc"></div>');
file.previewElement.appendChild(inputs);
var removeButton = Dropzone.createElement("<button class=\"dz-button\">Vymazať</button>");
var _this = this;
removeButton.addEventListener("click", function(e) {
e.preventDefault();
e.stopPropagation();
i=--i;
_this.removeFile(file);
});
file.previewElement.appendChild(removeButton);
});
var myDropzone = this;
$("#submit-all").click(function (e) {
e.preventDefault();
e.stopPropagation();
myDropzone.processQueue();
i=0;
}
);
this.on("successmultiple", function(files, response) {
console.log(response);
});
this.on("complete", function(file) {
myDropzone.removeFile(file);
});
this.on("errormultiple", function(files, response) {
});
},
autoProcessQueue: false,
previewsContainer: ".dropzone",
uploadMultiple: true,
parallelUploads: 25,
maxFiles: 25,
};
</script>
答案 0 :(得分:4)
添加以下简单的代码行:
myDropzone.on("addedfile", function(file) {
if (this.files.length) {
var _i, _len;
for (_i = 0, _len = this.files.length; _i < _len - 1; _i++) // -1 to exclude current file
{
if(this.files[_i].name === file.name && this.files[_i].size === file.size && this.files[_i].lastModifiedDate.toString() === file.lastModifiedDate.toString())
{
this.removeFile(file);
}
}
}
});
答案 1 :(得分:0)
检查文件名和大小应该没问题。我已经测试了它,它对我来说几乎没有用,并且没有遇到任何问题。
我登陆的原始帖子是Git issue #639,其中社区成员发布了他的名称和尺寸验证解决方案。
a similar post answer中也提到了这个技巧。
答案 2 :(得分:0)
this.on("addedfile", function (file) {
if (this.files.length) {
var i, len, pre;
for (i = 0, len = this.files.length; i < len - 1; i++) {
if (this.files[i].name == file.name) {
alert("The Doc.: " + file.name + " is already registered.")
return (pre = file.previewElement) != null ? pre.parentNode.removeChild(file.previewElement) : void 0;
}
}
}
});