12

我正在使用 dropzone.js 启用拖放到我的文件上传。

我已将 autoProcessQueues 设置为 false,并且正在对添加到上传容器的所有文件运行 processQueue 命令。

处理完所有文件后,有什么方法可以刷新页面吗?我无法在 processQueue 函数中看到任何回调函数..

4

6 回答 6

22

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事件,所以你不需要检查队列长度。

于 2014-10-19T19:55:16.243 回答
9

如果所有文件都已上传,则无需手动检查。Dropzone 提供了一个默认功能,它会在队列中的所有文件都处理完后触发。利用queuecomplete你的优势。

用这个:

this.on("queuecomplete", function (file) {
      location.reload();
  });
于 2016-01-27T13:20:38.783 回答
7

这是您需要做的事情。

初始化你的插件。

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.
    });

我希望这有帮助。

于 2014-02-27T13:39:45.440 回答
1

尝试处理“完成”事件。

$dropzone.on('complete', function () {
    location.reload();
});

Dropzone.js 维基

于 2013-09-24T00:16:20.820 回答
0

我会使用completeMultiple处理程序,但您必须将上传正确处理为file[]or的数组files[]。如果您真的不想处理这个问题,请设置maxFiles: 1或检查队列以确保没有其他内容正在上传,以便页面刷新取消任何待处理的内容。您可以使用以下命令检查队列:

if (myDropzone.getQueuedFiles().length == 0 && myDropzone.getUploadingFiles().length == 0)
于 2014-01-23T00:23:36.087 回答
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();

于 2020-10-06T07:51:49.947 回答