Загрузка файлов на сервер перетаскиванием в зону приёма.
Вариант реализации на HTML, AJAX, PHP.
В современных разработках сайтов и интернет сервисов уже практически везде используется загрузка файлов на сервер перетаскиванием из папки расположения в обозначенную на веб странице зону приёма. Это очень удобно, так как в традиционном исполнении загрузка файлов подразумевает поиск целевого файла по дереву диска, что может занимать больше времени, особенно когда файл уже найден и находится перед глазами в открытой папке.
Вот как задачу по загрузки файлов перетаскиванием решил AI ChatGPT-4. Решение рабочее.
Вопрос: Нужна реализация на html, ajax, php загрузить файла на сервер перетаскиванием из папки с исходным файлом на зону приёма. Пример кода с комментированием.
Ответ AI ChatGPT-4:
<div id="dropArea" ondrop="handleDrop(event);" ondragover="handleDragOver(event);"> Drop file here </div>
JS (с использованием библиотеки jQuery):
function handleDragOver(evt) { evt.preventDefault(); evt.stopPropagation(); } function handleDrop(evt) { evt.preventDefault(); evt.stopPropagation(); var files = evt.dataTransfer.files; var formData = new FormData(); for (var i = 0; i < files.length; i++) { formData.append('file[]', files[i]); } $.ajax({ url: 'upload.php', type: 'POST', data: formData, processData: false, contentType: false, success: function(response) { console.log(response); }, error: function(xhr, status, error) { console.log(error); } }); }
PHP (в файле upload.php):
if (isset($_FILES['file'])) { $targetDir = 'uploads/'; $errors = []; foreach ($_FILES['file']['name'] as $key => $name) { $targetFile = $targetDir . basename($name); $tmpName = $_FILES['file']['tmp_name'][$key]; if (move_uploaded_file($tmpName, $targetFile)) { // файл успешно загружен } else { $errors[] = 'Error uploading file ' . $name; } } if (!empty($errors)) { echo implode(', ', $errors); } }
В данном примере мы создаем зону приема (dropArea) и определяем две функции - handleDragOver и handleDrop. Первая функция нужна, чтобы предотвратить стандартное поведение браузера при перетаскивании, которое может привести к открытию файла в браузере. Вторая функция обрабатывает событие ondrop и загружает файлы на сервер с помощью ajax-запроса в файл upload.php.
В файле upload.php мы проверяем, что на сервер были загружены файлы, затем перебираем каждый файл, перемещаем его в папку uploads и выводим сообщение об успешной/неуспешной загрузке.
Дата публикации: