Загрузка файлов на сервер перетаскиванием в зону приёма.

Вариант реализации на HTML, AJAX, PHP.


В современных разработках сайтов и интернет сервисов уже практически везде используется загрузка файлов на сервер перетаскиванием из папки расположения в обозначенную на веб странице зону приёма. Это очень удобно, так как в традиционном исполнении загрузка файлов подразумевает поиск целевого файла по дереву диска, что может занимать больше времени, особенно когда файл уже найден и находится перед глазами в открытой папке.
Вот как задачу по загрузки файлов перетаскиванием решил AI ChatGPT-4. Решение рабочее.

вопрос значёкВопрос: Нужна реализация на html, ajax, php загрузить файла на сервер перетаскиванием из папки с исходным файлом на зону приёма. Пример кода с комментированием.

Ответ от AI ChatGPT Ответ AI ChatGPT-4:

HTML
<div id="dropArea" ondrop="handleDrop(event);" ondragover="handleDragOver(event);">
  Drop file here
</div>

JS (с использованием библиотеки jQuery):

JS
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):

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 и выводим сообщение об успешной/неуспешной загрузке.

 

Дата публикации: 

ТОП 10 случайных публикаций



Сайт разработан студией © WEB-VidST   


Яндекс.Метрика