繁体   English   中英

Dropzone处理队列不在服务器端验证

[英]Dropzone Processing Queue not working on server side validation

我正在使用Laravel 5.8并在表单中集成了dropzone。在我的表单中,我在服务器端有帖子标题唯一验证。

问题的情景是

1.user将输入博客文章标题并在dropzone中添加5个图像。

2.然后,如果输入的标题已经存在,那么它将验证错误

3.如果我们尝试提交表单再次验证错误,那么请求将不会发送到server.It表示dzClosure.processQueue(); 失败

document.getElementById("submitArticleFormButton").addEventListener("click", function(e) {
 if (dzClosure.files.length>0) {
                        ;

                        dzClosure.processQueue(); 
                    } else {

                        dzClosure.uploadFiles([]);


                    }
}

我如何解决这个问题。

当我审阅我在文件https://github.com/enyo/dropzone/wiki/FAQ#how-to-show-an-error-returned-by-the-server后发现的一些问题时

即使是我的情况,当抛出验证错误然后它将是419但仍然没有按预期工作

在此输入图像描述

在此输入图像描述

更新我有问题只有服务器端验证,除了它工作正常。如果我抛出验证后如果我添加额外的图像然后如果我尝试提交然后它将工作正常。 即使我已经包含了csrf令牌和419其自定义标头集

  public function respond($data, $headers = [])
    {
        $data['error']="error occured";
        return response()->json($data,419, $headers);
    }

您是否已将CSRF令牌附加到dropzone标头? 我前一段时间遇到了同样的问题,并且能够通过使用带有Dropzone的CSRF令牌头来修复它。

首先,您需要打印我们的CSRF令牌


   var CSRF_token = {% csrf_token %};

然后将其包含在您的请求中。

   sending: function(file, xhr, formData) {
      formData.append("csrf_token", CSRF_token);
   }

更新的答案,

尝试手动将Dropzone文件状态更新为Queued,这样dropzone会再次上传相同的图像。

dzClosure.files.forEach(file => {
   file.status = Dropzone.QUEUED
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM