如何阻止dropzone删除我的文件?

时间:2016-06-23 20:01:46

标签: javascript jquery dropzone.js

我有删除的文件'已配置dropzone的事件 但是在函数中,我从服务器中删除了该文件。

如果服务器无法删除文件,请执行 然后我希望dropzone事件取消从dropzone元素窗口中删除文件。

这可能吗?

这是我的删除代码

this.on('removedfile', function(file) {
  //remove file from server
  if (file.status == 'success') {
    var model = {
      contractId: contractId,
      clientId: scope.currentClientId,
      fileName: file.name
    };
    scope.ajaxPost(scope.enumControllers.deleteContractAttachment, model, function(response) {
      response.error == false ? tp.showAlert(response.Message, 'success') : tp.showAlert(response.Message, 'error');;
    });
  }
});

1 个答案:

答案 0 :(得分:1)

我有问题,我解决了。
你需要修改源代码。

1:覆盖removedfile事件。将删除功能添加到Dropzone选项,如下所示:

new Dropzone({
      // options
      removefile: function(){
          // remove from server...
      }
});

2:在removeFile函数中:     删除此代码:this.files = without(this.files, file);

3:将without移至dropzone.prototype

Dropzone.prototype.without = function(list, rejectedItem) {//...}

最后:这是我的removedfile函数(它不是init函数的事件,而是dropzone选项的选项):

removedfile: function (file) {
                var _ref,
                    isFileUploadSuccess = (file.status === Dropzone.SUCCESS),
                    isDeleteSuccess;
                if (isFileUploadSuccess) {
                    customOptions && typeof customOptions.removeFunc === "function" && (isDeleteSuccess = customOptions.removeFunc(file));
                }
                if ((isFileUploadSuccess && isDeleteSuccess || !isFileUploadSuccess) && file.previewElement && (_ref = file.previewElement) !== null) {
                    _ref.parentNode.removeChild(file.previewElement);
                    this.files = this.without(this.files, file);
                }
                return this._updateMaxFilesReachedClass();
            }

removeFunc是我通过ajax(async:false)从服务器删除文件的功能,所以我可以收到文件是否成功删除的结果;

也许我的代码不好,但它解决了我的问题。