文件下载上传dataTransfer为空Angular 2

时间:2016-10-28 09:25:33

标签: angular file-upload typescript

我正在尝试创建简单的拖放文件上传过程。但实际上我无法从事件中获取dataTransfer。

文件列表始终为空。有人可以帮帮我吗?我不知道自己到底做错了什么。非常感谢您的帮助。

这是Plunker的例子。

P.S。抱歉,我无法发布正常的链接视图,因为有提示:链接应该是代码。

[演示] [1]

[1]: https://plnkr.co/edit/tfRHBg7P6QUGDHqWp2TL?p=preview

P.S。更新。我发现了一件有趣的事情。  在直接dataTransfer中,我可以看到文件列表为空。但是当我试图迭代它时......它有效。我可以看到我的档案。怎么解释?我抬起我的花匠,所以你可以检查它。这很奇怪。

public t_fileDrop(e): void {


e.stopPropagation(); // Stops some browsers from redirecting.
    e.preventDefault();
    console.log("DROP =>", e);
    console.log("e.dataTransfer =>", e.dataTransfer);

    console.log(e.dataTransfer.getData("image/jpeg"));

    var files = e.dataTransfer.files;
    for (var i = 0, f; f = files[i]; i++) {
      console.log(f); // Here I can see my dropped file! :)
    }
   }

1 个答案:

答案 0 :(得分:0)

Angular 中的简单解决方案是通过扩展运算符复制数组。

onDrop(event) {
    const files = [...event.dataTransfer.files];
    console.log(files);
    if (files.length > 0) {
      this.fileDropped.emit(files);
    }
}