我正在尝试创建简单的拖放文件上传过程。但实际上我无法从事件中获取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! :)
}
}
答案 0 :(得分:0)
Angular 中的简单解决方案是通过扩展运算符复制数组。
onDrop(event) {
const files = [...event.dataTransfer.files];
console.log(files);
if (files.length > 0) {
this.fileDropped.emit(files);
}
}