Вы передаете файл в функцию dropfile
.
var file = e.dataTransfer.files[0];
dropfile(file);
в функции dropfile
вы используете его неправильно.
reader.readAsText(input.files[0],"UTF-8");
вам следует изменить строку на
reader.readAsText(input,"UTF-8");
Попробуйте приведенный ниже фрагмент.
function dropfile(file) {
var reader = new FileReader();
reader.onload = function(e) {
notepad.value = e.target.result;
};
reader.readAsText(file, "UTF-8");
}
notepad.ondrop = function(e) {
e.preventDefault();
var file = e.dataTransfer.files[0];
dropfile(file);
};
html,
body {
height: 100%;
padding: 0;
margin: 0;
}
#notepad {
position: absolute;
top: 0;
left: 0;
bottom: 0;
border: 0;
padding: 1em;
width: calc(100vw - 2em);
resize: none;
}
#notepad:focus {
outline: 0;
}
<textarea
id="notepad"
placeholder="drag and drop your .txt file"
></textarea>