admin管理员组

文章数量:1323200

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.

本文标签: javascriptDropzone prevent addfile twiceStack Overflow