最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Dropzone: prevent addfile twice - Stack Overflow

programmeradmin3浏览0评论

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("plete", function(file) {
            myDropzone.removeFile(file);
        });

        this.on("errormultiple", function(files, response) {
             });
        },
        autoProcessQueue: false,
        previewsContainer: ".dropzone",
        uploadMultiple: true,
        parallelUploads: 25,
        maxFiles: 25,
      };
    </script>

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("plete", function(file) {
            myDropzone.removeFile(file);
        });

        this.on("errormultiple", function(files, response) {
             });
        },
        autoProcessQueue: false,
        previewsContainer: ".dropzone",
        uploadMultiple: true,
        parallelUploads: 25,
        maxFiles: 25,
      };
    </script>
Share Improve this question edited Nov 20, 2014 at 15:56 jesus6402 asked Nov 20, 2014 at 14:54 jesus6402jesus6402 411 silver badge8 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 6

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].lastModified.toString() === file.lastModified.toString())
            {
                this.removeFile(file);
            }
        }
    }
});
 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;
                            }
                        }
                    }
                });

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 munity member posted his solution for name and size verification.

That trick was also mentioned in a similar post answer.

发布评论

评论列表(0)

  1. 暂无评论