【问题标题】:Dropzone.js - Success message after UploadDropzone.js - 上传后的成功消息
【发布时间】:2015-12-05 12:26:51
【问题描述】:

我正在使用 Dropzone.js 进行文件上传过程。我已经在 stackoverflow 上找到了一些关于我的问题的主题,但这些解决方案都没有帮助我。

现在用户可以在上传一个文件后一次上传多个文件,有一个名为“删除文件”的链接。就这样!我想要的是以下内容:

如果用户上传了 4 张图片,而不是上传完所有这些图片,则应该有一条成功消息。现在用户不知道这些文件是否 100% 上传。我不擅长 jQuery/Ajax,所以我真的不知道我的代码应该是什么样子。如果有人能告诉我我的代码应该是什么样子才能正常工作,那就太好了。

这是我的表格:

    print "<div class='col-sm-12'><br /><br />";
    print "<form method='post' action='index.php' id='dropzone' class='form-horizontal dropzone'>";
    print "<input type='hidden' name='func' value='supportticket'>";
    print "<input type='hidden' name='id' value='".$id."'>";
    print "<input type='hidden' name='sid' value='".$sid."'>";
    print "<input type='hidden' name='attach_images' value='".$attach_images."'>";
    print "<div class='form-group'>";
    print "<div class='col-sm-8'>";
    print "<div class='fallback'>";
    print "<input name='file' type='file' multiple='' />";
    print "</div>";
    print "</div>";
    print "</div>";
    print "</form>";
    print "</div>";

这是我的脚本:

    <script type="text/javascript">
        jQuery(function($){

        try {
          Dropzone.autoDiscover = false;
          var myDropzone = new Dropzone("#dropzone" , {
            paramName: "file", // The name that will be used to transfer the file
            maxFilesize: 2.0, // MB

            addRemoveLinks : true,
            dictDefaultMessage :
            '<span class="bigger-150 bolder"><i class="ace-icon fa fa-caret-right red"></i> Drop files</span> to upload \
            <span class="smaller-80 grey">(or click)</span> <br /> \
            <i class="upload-icon ace-icon fa fa-cloud-upload blue fa-3x"></i>',
            dictResponseError: 'Error while uploading file!',

            //change the previewTemplate to use Bootstrap progress bars
            previewTemplate: "<div class=\"col-sm-4\"><div class=\"dz-preview dz-file-preview\">\n  <div class=\"dz-details\">\n    <div class=\"dz-filename\"><span data-dz-name></span></div>\n    <div class=\"dz-size\" data-dz-size></div>\n    <img data-dz-thumbnail />\n  </div>\n  <div class=\"progress progress-small progress-striped active\"><div class=\"progress-bar progress-bar-success\" data-dz-uploadprogress><br /></div></div>\n</div>\n  <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n</div></div>"
          });



           $(document).one('ajaxloadstart.page', function(e) {
                try {
                    myDropzone.destroy();
                } catch(e) {}
           });

        } catch(e) {
          alert('Dropzone.js does not support older browsers!');
        }

        });
    </script>

注意:目前上传工作正常!所有图像都上传到我的服务器,我还编写了一个脚本,以便我的文件名将保存在我的数据库中。我唯一需要做的就是扩展我的脚本,以便在上传成功时收到一条成功消息。

希望有人能帮帮我!

编辑: 这是我当前的代码。上传仍然可以正常工作,但上传所有文件后没有成功消息。

    <script type="text/javascript">
        jQuery(function($){

        try {
          Dropzone.autoDiscover = false;
          var errors = false;
          var myDropzone = new Dropzone("#dropzone" , {
            paramName: "file", // The name that will be used to transfer the file
            maxFilesize: 2.0, // MB

            error: function(file, errorMessage) {
            errors = true;
            },
            queuecomplete: function() {
            if(errors) alert("There were errors!");
            else alert("We're done!");
            },

            addRemoveLinks : true,
            dictDefaultMessage :
            '<span class="bigger-150 bolder"><i class="ace-icon fa fa-caret-right red"></i> Drop files</span> to upload \
            <span class="smaller-80 grey">(or click)</span> <br /> \
            <i class="upload-icon ace-icon fa fa-cloud-upload blue fa-3x"></i>',
            dictResponseError: 'Error while uploading file!',

            //change the previewTemplate to use Bootstrap progress bars
            previewTemplate: "<div class=\"col-sm-4\"><div class=\"dz-preview dz-file-preview\">\n  <div class=\"dz-details\">\n    <div class=\"dz-filename\"><span data-dz-name></span></div>\n    <div class=\"dz-size\" data-dz-size></div>\n    <img data-dz-thumbnail />\n  </div>\n  <div class=\"progress progress-small progress-striped active\"><div class=\"progress-bar progress-bar-success\" data-dz-uploadprogress><br /></div></div>\n</div>\n  <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n<span data-dz-suc>successfull</span></div></div>"
          });

           $(document).one('ajaxloadstart.page', function(e) {
                try {
                    myDropzone.destroy();
                } catch(e) {}
           });


        } catch(e) {
          alert('Dropzone.js does not support older browsers!');
        }

        });
    </script>

谢谢, 克里斯

【问题讨论】:

    标签: javascript php jquery file-upload dropzone.js


    【解决方案1】:

    试试这个,写你的成功代码如下,

     success:function(file, response)
            {
                // Do what you want to do with your response
                // This return statement is necessary to remove progress bar after uploading.
                return file.previewElement.classList.add("dz-success");
            }
    

    你可以参考链接, http://www.dropzonejs.com/#event-success 了解更多详情。

    【讨论】:

    • 您的答案比他们的网站包含更多信息。 :o) 以下是他们所拥有的:success 文件已成功上传。获取服务器响应作为第二个参数。 (这个事件之前被称为完成)[没那么有用,这就是我去寻找更多信息的原因]
    【解决方案2】:

    这是我的做法,结合了error 处理程序和queuecomplete

    var errors = false;
    
    var myDropzone = new Dropzone("#dropzone" , {
        ...
    
        error: function(file, errorMessage) {
            errors = true;
        },
        queuecomplete: function() {
            if(errors) alert("There were errors!");
            else alert("We're done!");
        }
    

    【讨论】:

    • 感谢您的代码,但您能告诉我必须在哪里插入代码吗?当我集成您的代码时,我的代码应该是什么样子?
    • @ChristophC。在代码中设置 Dropzone 时,您已经设置了许多选项/参数(例如 addRemoveLinksdictDefaultMessage)。这些只是添加到列表中的两个新参数。
    • 我在我的代码中的 maxFileSize 下输入了您的“错误:...”代码和您的“队列完成:...”代码,并在我的 var myDropzone 上方输入了您的 var error = false 但这不是在职的!我没有在任何地方看到错误或成功消息。
    • 我编辑了我的第一篇文章!请看我第一篇文章的底部!我插入了您的代码,但没有任何反应。仍然没有错误或成功消息。你知道为什么吗?
    【解决方案3】:

    我遇到了和你类似的问题,下面是我的代码,希望对你有帮助

    Dropzone.options.UploadForm = {
            method: "post",
            uploadMultiple: true,
            acceptedFiles: ".csv",
            autoProcessQueue: false,
            init: function () {
                myDropzone = this;
                var submitButton = document.querySelector("#submit-all");
                var removeButton = document.querySelector("#remove-all");
    
                submitButton.addEventListener("click", function () {
                    myDropzone.processQueue(); // Tell Dropzone to process all queued files.
                });
                removeButton.addEventListener("click", function () {
                    myDropzone.removeAllFiles();
                    submitButton.removeAttribute("disabled");
                });
                this.on("addedfile", function (file) {
                });
                this.on("sendingmultiple", function (file) {
                    // And disable the start button
                    submitButton.setAttribute("disabled", "disabled");
                });
                this.on("completemultiple", function (file) {
                    if (this.getUploadingFiles().length === 0 && this.getQueuedFiles().length === 0) {
                        submitButton.removeAttribute("disabled");
                    }
                });
                this.on("successmultiple", function (file, response) {
                    console.log(response);
                    $(response).each(function (index, element) {
                        if (element.status) {
                            $("body").prepend('<div class="alert alert-success alert-dismissable">' +
                                '<a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>' +
                                '<strong>Success! </strong> ' + element.fileName + ' was uploaded successfully</div>');
                        }
                        else {
                            $("body").prepend('<div class="alert alert-danger alert-dismissable">' +
                                '<a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>' +
                                '<strong>Error!</strong> ' + element.message + '</div >');
                        }
                    });
                    submitButton.removeAttribute("disabled");
                });
                this.on("error", function (file, errorMessage) {
                    $("body").prepend('<div class="alert alert-danger alert-dismissable">' +
                        '<a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>' +
                        '<strong>Error!</strong> ' + errorMessage + '</div >');
                    submitButton.removeAttribute("disabled");
                });
            }
        };
    

    sendingmultiple、completemultiple 和 successmultiple 用于多文件上传。

    【讨论】:

      【解决方案4】:

      这有帮助吗?

      Dropzone.options.myDropzone = {
        init: function() {
              this.on("success", function(file, responseText) {
      
                   //
              });
          }
      };
      

      此链接也可能会有所帮助:https://github.com/enyo/dropzone/issues/244

      【讨论】:

      • 你能告诉我我应该把这段代码放在我的代码中的什么地方吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 2017-12-23
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多