Я хочу получить тип файлов вложенных данных, но ERROR выбрасывается в консоль:
Ошибка:
Uncaught TypeError: Cannot read property 'type' of undefined
JS:
var reader = new FileReader();
$(".paste").on('drop', function( e ) {
e.stopPropagation();
e.preventDefault();
var file = e.target.files || (e.dataTransfer && e.dataTransfer.files);
var legalTypes = ["image/png", "image/jpeg", "image/gif"];
if(legalTypes.indexOf(file.type) === -1) {
alert("Please only upload image files!");
return false;
}
использовать event.originalEvent
, чтобы получить dataTransfer
объект.
Также объект files будет содержать массив файлов. поэтому вам нужно пройти через них или использовать первый элемент.
окончательный код будет:
$(document).ready(function () {
var reader = new FileReader();
$(".paste").on('drop', function( e ) {
e.stopPropagation();
e.preventDefault();
var files = e.originalEvent.target.files || (e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files);
var legalTypes = ["image/png", "image/jpeg", "image/gif"];
for( i in files ) {
if(legalTypes.indexOf(files[i].type) < 0 ) {
alert("Please only upload image files!");
return false;
}
}
});
});