我有一个很棒的Dropzone。我还有一些元素可以作为其他“目标”,用户可以在其中放置文件。
问题是,我不知道如何将拖放的文件从目标元素“转发”到放置区以进行上传。我更喜欢下面的代码示例,而不是生成多个放置区,因为在将来这种情况下,这种感觉非常棘手,因为将来目标放置元素的数量可能是10或15 +。
"drop": function(e) {
e.preventDefault();
myDropzone.upload(e.originalEvent.dataTransfer); // Any way to do something like this?
}
答案 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并附有示例。它实际上并没有将文件上传到服务器,但是您会看到它们已按预期方式添加到放置区。