files = {}; // для хранения файлов
var theInputFile = $('input[type="file"]'); // инпут с типом файл и атрибутом multiple
var dropZone = $('.dropZone');
ondragover,ondragleave // пропустим
//когда файл(-ы) перетащили и бросили
dropZone[0].ondrop = function(event){
    event.preventDefault(); //отмена стандартных поведений браузера
    event.stopPropagation(); //отмена стандартных поведений браузера
    dropZone.removeClass('hovered'); // удаляем
    dropZone.addClass('droped'); // и добавляем нужные классы
    var dt = event.dataTransfer; // получаем
    var dfiles = dt.files; // переносимые файлы
    var dcount = dfiles.length; // получаем кол-во переносимых файлов
if(dcount<=fileLimit){ // если меньше или равно 3 (кол-во)
    $('.totalPhotos span').text(dcount); // показываем кол-во юзеру
    files = {}; // очищаем хранилище с файлами
    theInputFile.val(''); //очищаем инпут file
    $('.combineLoaded').empty(); // очищаем div, где будут отображаться превью файлов
    theInputFile.files = dfiles; // попытка добавить инпут file все переносимые файлы (не работает)
var isSomeFileTooBig = Object.values(theInputFile.files).some(function(file){ //найти во всех файлах
    return file.size > maxFileSize; //файл, превыщающий 4 мб
});
if(isSomeFileTooBig){ // если нашелся такой
    $('.totalPhotos span').css('color', '#ff0000').text('0'); // то
    files = {}; // очищаем хранилище файлов
    theInputFile.val(''); // и инпут file
    $('.combineLoaded').empty(); // и div для вывода превью файлов
    return false; // далее делаем ничего
}
// а если нет файла больше чем 4 мб
else{ 
    $.each(theInputFile.files, function(i, file){ // то перебираем каждый файл
    var reader = new FileReader(); // читаем файл
    reader.onload = function(e){
    $('.combineLoaded').append('<div class="readUploadedFile ovh boxs posr"><div class="loadedImageName"><div class="fileName posr boxs ovh" title="'+ file['name'] +'">'+ file['name'] +'</div></div><img src="'+e.target.result+'" alt="'+ file['name'] +'" title="'+ file['name'] +'"></div>');
};
    reader.readAsDataURL(file); // вывели превью файла с именем
});
}
}
else{
    $('.totalPhotos span').css('color', '#ff0000').text('0'); // а если перетащили более 3 файлов то
    files = {}; // очищаем хранилище
    theInputFile.val(''); // очищаем инпут file
    $('.combineLoaded').empty(); // очищаем div с превью
    return false; // дальше делаем ничего
}
};
Что в итоге получается? При перетаскивании файлов отображается их превью и имена, все бы хорошо, но вот input file не добавляет в себя переносимые файлы. К сожалению.
То, что input file не добавляет в себя переносимые drag n drop файлы, проверил на php
if(empty($_FILES['file']['name'])){
    echo json_encode(['error' => 'Не выбраны изображения для загрузки'], JSON_UNESCAPED_UNICODE);
    exit;
}
В то же время если выбрать файлы путем клика на нативную кнопку "выбрать файл", все ок. Но вот с drag n drop засада. Есть ли способ решить проблему?