我正在使用dropzone.js来拖放到我的文件上传。
我已将autoProcessQueues设置为false,并且我正在对添加到上传容器的所有文件运行processQueue命令。
有没有办法在处理完所有文件后刷新页面?我无法在processQueue函数中找到任何回调函数..
答案 0 :(得分:17)
以下是一个完整的解决方案,其中包含其他贡献者解决方案,其中dropzoneJsForm
是您的dropzone表单的id
。此脚本在页面加载时运行,并使用这些选项初始化dropzone。 (我没有禁用自动发现)。
// Initialise DropZone form control
// dropzoneJsForm = the id of your dropzone form
Dropzone.options.dropzoneJsForm = {
maxFilesize: 10, // Mb
init: function () {
// Set up any event handlers
this.on('completemultiple', function () {
location.reload();
});
}
};
编辑:现在有completemultiple
个事件,因此您无需检查队列长度。
答案 1 :(得分:6)
以下是您需要做的事情。
Dropzone.autoDiscover = false;
此行用于关闭dropzone的自动发现。
var md = new Dropzone(".mydropzone", {
url: "/user/upload/", # your post url
maxFilesize: "5", #max file size for upload, 5MB
addRemoveLinks: true # Add file remove button.
});
md.on("complete", function (file) {
if (this.getUploadingFiles().length === 0 && this.getQueuedFiles().length === 0) {
alert('Your action, Refresh your page here. ');
}
md.removeFile(file); # remove file from the zone.
});
我希望这会有所帮助。
答案 2 :(得分:5)
如果已上传所有文件,则无需手动检查。 Dropzone提供了一个默认函数,一旦在队列中处理完所有文件,它就会触发。使用queuecomplete
对您有利。
使用它:
this.on("queuecomplete", function (file) {
location.reload();
});
答案 3 :(得分:0)
答案 4 :(得分:0)
我会使用completeMultiple
处理程序,但您必须以file[]
或files[]
的数组正确处理上传。如果你真的不想处理它,那么设置maxFiles: 1
或检查队列以确保没有其他内容正在上传,以便页面刷新取消任何待处理的事情。您可以使用以下方法检查队列:
if (myDropzone.getQueuedFiles().length == 0 && myDropzone.getUploadingFiles().length == 0)
答案 5 :(得分:0)
我知道这是一个老问题,但是我想分享对我有用的东西。
Dropzone.options.myDropzone = {
paramName: 'file',
maxFilesize: 5, // MB
maxFiles: 18,
acceptedFiles: "image/*",
init: function () {
this.on("queuecomplete", function (file) {
$( "#leo" ).load(window.location.href + " #leo" );});}},
在这里,我重新加载div而不是重新加载整个页面..如果您想重新加载整个页面,请使用location.reload();