Dropzone.js - 仅显示完整上传的进度

时间:2016-04-12 07:01:12

标签: javascript twitter-bootstrap file-upload upload dropzone.js

我正在使用dropzone.js将文件上传到我的服务器。这就是文件的样子:

<div id="full_site">
    <form id="uploadFile" method="post" name="uploadFile" action="upload.php"
          class="dropzone needsclick dz-clickable full-height">
        <span id="tmp-path"></span>
        <div class="dz-message"><b></b></div>
    </form>
</body>


<script>
    $(document).ready(function () {
        Dropzone.autoDiscover = false;

        Dropzone.options.uploadFile = {
            init: function () {
                this.on("success", function (file, responseText) {
                    file.previewTemplate.appendChild(document.createTextNode(responseText));
                });

                this.on("sending", function (file) {
                    $("#tmp-path").html('<input type="hidden" name="path" value="' + file.fullPath + '" />')
                });
            }
        };

        var myDropzone = new Dropzone("#uploadFile", {
            url: "upload.php"
        });
    });
</script>

我尝试实现的是,不再显示上传预览,因此它们不再是每个文件的预览,而是一个进度条,显示完整上传的整个过程(可能只显示错误,如果有一个,但否则不显示每个项目)。有什么方法可以实现这个目标吗?

编辑:可选点是在引导模式中显示此进度条,因此当您上传某些内容时,它不会更改网站上的任何内容。

1 个答案:

答案 0 :(得分:4)

这有几个部分。首先,您要避免为已排队或正在上传的项目设置任何预览模板。我认为dropzone需要某种对象,所以你基本上可以通过将dropzone初始化中的previewTemplate选项设置为div而不是其中的任何内容来实现:

var myDropzone = new Dropzone("#uploadFile", {
    url: "upload.php",
    previewTemplate: "<div></div>"
});

另一部分是进度条。为此,您可以为addedfile添加一个事件监听器来创建进度条

myDropzone.on("addedfile", function (file) {
     // Build progress bar here
});

然后,使用dropzone中的totaluploadprogress事件更新进度条上的进度:

myDropzone.on("totaluploadprogress", function(progress) {
    // Update progress bar with the value in the variable "progress", which 
    // is the % total upload progress from 0 to 100
});

希望这能指出你正确的方向。当然还需要进行其他清理,例如何时隐藏总进度条等等。