DropzoneJS 上传后隐藏dropzone区域,如何取回?

DropzoneJS hides dropzone area after uploading, how to get it back?

我正在使用 angular2-dropzone-wrapper,我几乎可以按需使用它。

我有这样的配置:

this.dropZoneConfig = {
    server: this.url,
    maxFilesize: 50,
    acceptedFiles: ".xml",
    parallelUploads: 5,
    uploadMultiple: true,
    createImageThumbnails: false,
    addRemoveLinks: true,
    headers: { "Authorization": "Bearer " + sessionStorage.getItem("AccessToken")}
};

当我 select 上传文件时,我得到了很好的进度条。 上传所有文件后,我最终得到一个大的空白块,之前包含进度条。我没有看到任何东西,因为我设置了 createImageThumbnails: false 这是正确的,因为我正在上传 XML 文件并且不需要缩略图。

当所有文件完成后,我希望重置放置区。所有以前上传的文件都被删除,拖放区又回来了。

我发现了几个使用 removeFile(file) 方法的示例。这似乎可以解决问题,但示例在 JavaScript 中,我正在使用 TypeScript,但不知道如何转换它(我是 TypeScript 的新手)。

我确实在听 QueueComplete:

private onDropZoneQueueComplete(event) {
    console.log("In onDropZoneQueueComplete");
}

在这里我想我需要调用removeFiles方法或者在'Success'事件监听器中调用removeFile。

编辑: 我的 HTML:

  <dropzone [config]="dropZoneConfig" [message]="'Click or drag images here to upload'"
          (error)="onDropZoneUploadError($event)"
          (sendingmultiple)="onDropZoneSendingMultiple($event)"
          (queuecomplete)="onDropZoneQueueComplete($event)"></dropzone>

Dropzone documentation 表示您需要在 Dropzone 实例,即 myDropzone.removeAllFiles().

但是,浏览 angular2-dropzone-wrapper 的源代码时,我偶然发现了一个 reset() 方法,它会为您调用 this.dropzone.removeAllFiles()。旁注:调用 removeAllFiles() 时,不会删除正在上传的文件。

您可以使用以下语法调用 reset() 方法:

<dropzone #dz (queuecomplete)="dz.reset()"></dropzone>

或者,如果您有更多代码要在 queuecomplete 上执行,您可以调用自定义方法并将对指令 (dz) 的引用传递给它:

<dropzone #dz (queuecomplete)="onDropZoneQueueComplete($event, dz);"></dropzone>

然后在你的 class:

private onDropZoneQueueComplete(event, dz) {
  this.filesListComponent.reload();  // additional code
  dz.reset();
}

Paul 还提到他添加了以下内容 CSS:

.dz-preview.dz-file-preview.dz-processing.dz-success.dz-comp‌​lete { display: none !important; }

仅供参考,我最初的想法是:让我们获取由 dropzone 指令创建的 Dropzone 实例!不幸的是,angular2-dropzone-wrapper 不允许您访问它创建的 dropzone 实例(this.dropzone 是私有的 属性)。它也不是 exportAs 实例(这会让你写类似 <dropzone #mydz="dzinstance"></dropzone> 的东西来在你自己的 mydz 属性 中获取 dropzone 实例)。