Dropzone: prevent addfile twice

笑着哭i 提交于 2019-12-07 18:23:19

问题


I'm using dropzone to upload images to gallery. I'm submiting by button. Is it possible to prevent adding same file twice? I'm not really sure if checking name or name and size. Here's my code:

<script>
      var i = 0;
      Dropzone.options.myDropzone = {
        init: function() {
            this.on("addedfile", function(file) {
            i=++i;

check filenames and filesizes of other files here

----------->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>

回答1:


Add these simple lines of code:

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);
            }
        }
    }
});



回答2:


Checking the file name and size should be fine. I already tested that and it had worked almost fine for me and haven't crossed any issues with it.

The original thread I landed in was a Git issue #639 where a community member posted his solution for name and size verification.

That trick was also mentioned in a similar post answer.




回答3:


 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;
                            }
                        }
                    }
                });


来源:https://stackoverflow.com/questions/27042588/dropzone-prevent-addfile-twice

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!