我有删除的文件'已配置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');;
});
}
});
答案 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)从服务器删除文件的功能,所以我可以收到文件是否成功删除的结果;
也许我的代码不好,但它解决了我的问题。