$(“ body”)。on(“ drop”)与Dropzone.js

时间:2018-12-28 01:32:30

标签: javascript jquery file-upload dropzone

我有一个很棒的Dropzone。我还有一些元素可以作为其他“目标”,用户可以在其中放置文件。

问题是,我不知道如何将拖放的文件从目标元素“转发”到放置区以进行上传。我更喜欢下面的代码示例,而不是生成多个放置区,因为在将来这种情况下,这种感觉非常棘手,因为将来目标放置元素的数量可能是10或15 +。

"drop": function(e) {

    e.preventDefault();

    myDropzone.upload(e.originalEvent.dataTransfer); // Any way to do something like this?

}

1 个答案:

答案 0 :(得分:0)

您可以通过访问Dropzone.instances并获取所需的实例来轻松完成此操作。如果只有一个,则抓住Dropzone.instances[0]。如果您有一个以上的对象,则可以找到带有正确的id元素的一个。获得该引用后,您可以调用drop,并从您的自定义区域的dataTransfer事件沿drop对象进行转发。

您的drop事件处理程序的代码如下所示:

function (e) {
  // make sure to avoid default browser handling (opens file in a new tab/window)
  e.preventDefault();

  if (e.dataTransfer && e.dataTransfer.files.length) {
    // you could pass along the entire event, but probably best to just pass what you need
    Dropzone.instances[0].drop({ dataTransfer: e.dataTransfer });
  }
}

Here's a sandbox并附有示例。它实际上并没有将文件上传到服务器,但是您会看到它们已按预期方式添加到放置区。