Я пытаюсь разрешить загрузку изображения на мой сайт с помощью перетаскивания на мой сайт путем перетаскивания изображения на определенный div на странице:
<div class = "container" (drop) = "onDrop($event)" (dragover) = "onDragOver($event)" (dragleave) = "onDragLeave($event)">
<img id = "blah" [src] = "url || 'http://placehold.it/180'" alt = "your image" />
</div>
У меня есть все события, связанные с перетаскиванием, однако я не смог получить изображение из FileReader:
Что я делаю неправильно? мои функции, связанные с падением с контроллера, приведены ниже для справки.
onDrop(event) {
event.preventDefault();
event.stopPropagation();
this.file = event.dataTransfer.files[0];
const reader = new FileReader();
reader.onload = e => {
this.url = reader.result;
console.info(this.url);
};
reader.readAsDataURL(this.file);
this.fileDraggedOverDiv = false;
}
onDragOver(event) {
event.stopPropagation();
event.preventDefault();
this.fileDraggedOverDiv = true;
return false;
}
onDragLeave(event) {
event.stopPropagation();
event.preventDefault();
this.fileDraggedOverDiv = false;
return false;
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Фактически вы успешно передаете файл событию onDrop. Просто вы не можете видеть это, когда выполняется console.info(JSON.stringify(event));, потому что унаследованные свойства и неперечислимые свойства не учитываются, как указано в это обсуждение.
Чтобы получить изображение с события нужно сделать следующее.
onDrop(event) {
event.preventDefault();
const file = event.dataTransfer.files[0];
}
См. этот стекблиц для полного рабочего примера.
@TylerB.Joudrey Это работает так же, как я сделал это в своем собственном проекте. Убедитесь, что вы определили событие reader.onload, и в событии вы установили значение src элемента изображения. Также, если мой ответ сработал для вас, пожалуйста, примите ответ.
Я определил это как reader.onload = e => { this.url = reader.result; console.info(this.url); };
И URL-адрес все еще не работает, поэтому я не могу принять ответ, пока он не появится.
@TylerB.Joudrey Будет трудно сказать, что не так с вашим кодом, не видя его. Взгляните на ссылку stackblitz, которую я добавил к ответу, и дайте мне знать, если вам удастся заставить ваш код работать, ссылаясь на нее.
Хорошо, спасибо за помощь. Как я должен отображать изображение? Я использую FileReader.readDataAsUrl(), чтобы попытаться получить URL-адрес изображения, и, похоже, он не работает.