如何允许Dropzone.js失败后重新提交文件上传
How to allow resubmission of file uploads after failure with Dropzone.js?
我有一个文件上传表单,它使用Dropzone.js将文件上传到我的服务器。用户一次最多可以上传5个文件,但我有一个独特的条件:如果服务器端出现任何单个文件错误(超过最大大小、错误的mime类型、错误的文件类型等),我不需要将任何文件添加到我的数据库中。这不是问题。
我遇到的问题是客户端对它的处理。为什么当我从服务器收到响应时,我无法再通过单击"提交"(其元素绑定到事件处理程序,如下所示)再次上传文件?
Dropzone.options.uploadedFilesDropzone = {
autoProcessQueue: false,
maxFilesize: 1024, //MB
addRemoveLinks: true,
uploadMultiple: true,
parallelUploads: 5,
maxFiles: 5,
init: function() {
var uploadedFilesDropzone = this;
$('#submit').on('click', function() {
uploadedFilesDropzone.processQueue();
uploadedFilesDropzone.on("successmultiple", function(files, response) {
// Handle the responseText here. For example, add the text to the preview element:
console.log(files);
console.log(response.errors[0]);
$.each(files, function(index, file) {
// no errors
if (response.errors[index].length == 0) {
} else {
file.previewElement.classList.add('dz-error');
}
})
});
});
}
}
processQueue()
后,文件将从Dropzone队列中删除。由于队列中没有文件,您无法再通过单击"提交"上载文件。
在收到响应后,您需要将每个文件添加回队列中。
如果文件服务器端出现错误,最好将响应的状态代码设置为200以外的值,以便覆盖Dropzone错误侦听器。
this.on("error", function(file, errorMessage) {
$.each(dropZone.files, function(i, file) {
file.status = Dropzone.QUEUED
});
$.each(message, function(i, item) {
$("#dropzoneErrors .errors ul").append("<li>" + message[i] + "</li>")
});
});
相关文章:
- 我可以自动提交文件上传吗
- 使用angular js通过rails回形针提交文件
- 如何允许Dropzone.js失败后重新提交文件上传
- 通过 Ajax 提交文件上传
- 使用 jQuery.ajax 提交文件会给出 TypeError
- 尝试使用 Angular $http通过表单异步提交文件
- 表单到iframe提交 - 文件上传后如何重置表单
- Valums-File-Uploader - 使用 Java 和 Selenium 提交文件
- 提交文件时不刷新页面
- 如何使用 ajax 提交文件上传表单
- 使用jQuery's Form Data()和Ajax提交文件失败
- 提交文件对象:非法调用
- 使用jQuery在IE10中动态提交文件上传表单
- 拖放和提交文件上传
- ajaxForm不提交文件输入选择更改
- 克拉吉文件输入提交文件的形式提交
- 如何在同一页面上提交文件而不重新加载
- 正在检查表单中提交文件的时间
- 拖放:使用常规表单通过拖放提交文件
- 为什么不dropzone提交文件?