【问题标题】:Dropzone js upload validation with multiple filesDropzone js上传多个文件的验证
【发布时间】:2015-09-24 00:55:13
【问题描述】:

我目前正在使用 Dropzonejs 上传文件。对于每个文件,我都附上了一个表单域。我必须做这样的事情,如果该文件附带的表单字段不为空,我想上传。否则,我会在缩略图下方显示错误消息。我已经完成了这项工作。

我面临的唯一问题是,假设选择了 3 个文件。第一个没有附加表单域,但第二个和第三个附加了表单域。显示错误消息,说明表单字段是必需的。但是其余的文件,第 2 和第 3 没有上传。它仅在我第一次提供必填字段时上传。

所以,我的问题是如何只上传那些附加了表单字段但将其余部分留在 Dropzone 区域供用户填写表单字段的内容?

更新: 添加文件后,用户需要将值放入表单字段中。如果未填写表单字段,则会显示错误消息并且文件未上传但仍保留在队列中。否则,如果该字段被填写,则文件被上传。

【问题讨论】:

  • 你能提供一个小提琴吗?

标签: javascript jquery dropzone.js


【解决方案1】:

您可能会连接到event

accept函数:

是一个获取文件和完成函数作为参数的函数。如果在没有参数的情况下调用 done 函数,则将处理该文件。如果您传递错误消息,它将被显示并且不会上传文件。如果文件太大或与 mime 类型不匹配,则不会调用此函数。

dz.options = {
    accept: function(file, done) {
        if (valid) {
            done();
        }
        else {
            done("error message");
        }
    }
}

不幸的是,这似乎是在放置后立即自动调用的。

您可能会发现其他事件更适合您的应用,例如send: function(file, xhr, formData).

【讨论】:

  • 感谢您的时间和精力。其实我并没有完全解释清楚。添加文件后添加表单域。因此用户可以指定文件的用途。所以 addedfile 事件不起作用。我正在处理事件并将file.status更改为已添加,但即使没有表单字段,文件也会被上传。无论如何我可以防止该特定文件的Default 并让具有表单字段的dropzone上传休息?
  • 在我的一个项目中,我不得不用我自己的收藏来跟踪 Dropzone 队列。我关闭了 autoProcessQueue 并忽略了 Dropzone 的队列。这是为了自定义调整大小,所以我基本上只是将 Dropzone 用作 UI 并管理我自己的文件队列。这可能是您可能需要做的。
  • 也许只是关闭自动进程并自己直接调用dz.processQueue()就足够了。
  • 在调用 processQueue() 之前尝试使用 getAcceptedFiles() 并检查集合。
  • 嘿@Jansen,我从你的建议中得到了更好的理解。我想出的是当上传但被点击时,我验证表单输入并在文件具有表单输入时传递给 Dropzone uploadFile(file) 函数。否则,将它们放在队列中。干杯!
猜你喜欢
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2014-02-09
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多