我正在使用 dropzone.js 启用拖放到我的文件上传。
我已将 autoProcessQueues 设置为 false,并且正在对添加到上传容器的所有文件运行 processQueue 命令。
处理完所有文件后,有什么方法可以刷新页面吗?我无法在 processQueue 函数中看到任何回调函数..
我正在使用 dropzone.js 启用拖放到我的文件上传。
我已将 autoProcessQueues 设置为 false,并且正在对添加到上传容器的所有文件运行 processQueue 命令。
处理完所有文件后,有什么方法可以刷新页面吗?我无法在 processQueue 函数中看到任何回调函数..
dropzoneJsForm
这是一个完整的解决方案,它结合了其他贡献者的解决方案,id
您的 dropzone 表单在哪里。此脚本在页面加载时运行,并使用这些选项初始化 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
事件,所以你不需要检查队列长度。
如果所有文件都已上传,则无需手动检查。Dropzone 提供了一个默认功能,它会在队列中的所有文件都处理完后触发。利用queuecomplete
你的优势。
用这个:
this.on("queuecomplete", function (file) {
location.reload();
});
这是您需要做的事情。
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.
});
我希望这有帮助。
我会使用completeMultiple
处理程序,但您必须将上传正确处理为file[]
or的数组files[]
。如果您真的不想处理这个问题,请设置maxFiles: 1
或检查队列以确保没有其他内容正在上传,以便页面刷新取消任何待处理的内容。您可以使用以下命令检查队列:
if (myDropzone.getQueuedFiles().length == 0 && myDropzone.getUploadingFiles().length == 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();