如何删除现有的文件dropzone?

时间:2016-03-08 08:25:32

标签: javascript jquery html dropzone.js

我有这个样本:

link

代码HTML:

<div class="dropzone dz-clickable" id="myDrop">
     <div class="dz-default dz-message" data-dz-message="">
          <span>Upload or drag patient photo here</span>
     </div>
</div>

CODE JS:

 Dropzone.autoDiscover = false;
 var myDropzone = new Dropzone("div#myDrop", {
   addRemoveLinks: true,
   url: "#",
   maxFiles: 1,
   init: function() {

     this.on("maxfilesexceeded", function(file) {
       alert("You are not allowed to chose more than 1 file!");
       this.removeFile(file);

     });

     this.on("addedfile", function(file) {
       myDropzone.options.removefile.call(myDropzone, mockFile);
       //  I want to delete an existing element
     });

   }
 });

 var fileName = $('#profilePicture').val();
 var mockFile = {
   name: fileName,
   size: 12345
 };
 myDropzone.options.addedfile.call(myDropzone, mockFile);
 myDropzone.options.thumbnail.call(myDropzone, mockFile, "https://lh3.googleusercontent.com/-eubcS91wUNg/AAAAAAAAAAI/AAAAAAAAAL0/iE1Hduvbbqc/photo.jpg?sz=104");

我想要做的是当用户上传文件,然后上传现有文件时。

你怎么能正确地做到这一点?

提前致谢!

6 个答案:

答案 0 :(得分:6)

这是一种有效的方法:

RecentNewsController

答案 1 :(得分:3)

尝试这种方法。

removedfile: function(file) {
            file.previewElement.remove();
}

答案 2 :(得分:1)

对我而言,如果图片已经在dropzone中上传,则不允许我添加更多内容。

this.on("addedfile", function(file) {
   /* Valid only in the dropzone . If a repetitive document shows ALERT and the previous item will disappear.(Sorry my English). */
   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 && this.files[i].size == file.size && this.files[i].lastModifiedDate.toString() == file.lastModifiedDate.toString()) {
         alert("Doc: " + file.name + " is already registered.")
         return (pre = file.previewElement) != null ? pre.parentNode.removeChild(file.previewElement) : void 0;
       }
     }
   }
 });

答案 3 :(得分:1)

尝试这种方法:

 success: function (file, response) {
                    if (this.files.length > 1)
                        this.removeFile(this.files[0]);
                    //Do others tasks...
                }

使用此方法将删除上一个项目。

答案 4 :(得分:1)

嗨,您只需将addRemoveLinks: true,添加到dropzone功能中, 在dropzon ajax之后添加成功功能

            success:function(file,response){
              file.serverId = response.id;
    $(".dz-preview:last .dz-remove").attr('onclick','delete_file('+file.serverId+')');
            }

在成功上传文件后的这段代码中,在onclick的dropzone中添加了一个标记,以调用delete_file函数,在此函数上,您可以接收ID并将ID发送给后端,查找文件 在后端并删除文件

答案 5 :(得分:0)

“你的每一个事件”喜欢:成功 - 错误 - 发送 - 已删除文件或已添加文件等

http://www.dropzonejs.com/#event-list

init : function () {
    self.on('Every your events', function (file, response) {
        this.removeFile(file);
    }
}

从此函数中删除文件可以执行此操作:

Dropzone.forElement("div#myDrop").removeAllFiles(true);