Dropzone Processing Queue 无法进行服务器端验证

Dropzone Processing Queue not working on server side validation

我在 form.In 我的表单中使用 Laravel 5.8 和集成的 dropzone 我在服务器端有 post 标题唯一验证。

问题场景是

1.user 将输入博客 post 标题并在拖放区添加 5 张图片。

2.then如果输入的标题已经存在则验证错误

3.after 如果我们尝试提交表单,则再次验证错误然后请求将不会发送到 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 但仍然无法按预期工作

更新 我只有在服务器端验证以外的情况下才会遇到问题 fine.even 如果我添加额外的图像然后如果我尝试提交那么它会正常工作。 甚至我已经包含了 csrf 令牌和 419 其自定义 header set

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

您是否已将 CSRF 令牌附加到 dropzone header?我前一段时间遇到了同样的问题,并且能够通过使用 CSRF 令牌 header 和 Dropzone 来解决它。

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


   var CSRF_token = {% csrf_token %};

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

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

更新答案,

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

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