...
WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Перетаскивание нескольких файлов для загрузки с помощью JavaScript и PHP

629

Раньше я писал статью «Перетаскивание файлов при помощи JavaScript и PHP». Некоторые читатели попросили написать статью о добавлении загрузчика файлов, который позволяет пользователям загружать несколько файлов с помощью функции перетаскивания.

Во время работы над веб-приложением вам может потребоваться загрузить несколько файлов с помощью одного загрузчика в вашей форме. Это может помочь пользователю загрузить один или несколько файлов за один раз. Они не любят загружать несколько файлов один за другим. Предоставление такой функции загрузки файлов улучшает взаимодействие с пользователем, а также ускоряет работу вашего приложения.

В этой статье я покажу вам, как добавить этот загрузчик файлов без использования внешнего плагина перетаскивания. Я загружу файлы с помощью Ajax. Это означает, что файлы будут загружены на сервер без перезагрузки всей страницы.

Начиная

Как я уже сказал, мы не будем использовать какие-либо внешние плагины для функции перетаскивания. Я собираюсь написать весь код с нуля. Это намного проще. В нем нет ничего сложного. Просто следуйте инструкциям ниже, и все готово.

Создадим файл index.htmlи добавим в него код ниже.

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Drag Drop Multiple File Upload</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div id="drop_file_zone" ondrop="upload_file(event)" ondragover="return false">
        <div id="drag_upload_file">
            <p>Drop file(s) here</p>
            <p>or</p>
            <p><input type="button" value="Select File(s)" onclick="file_explorer();"></p>
            <input type="file" id="selectfile" multiple>
        </div>
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="custom.js"></script>
</body>
</html>

Здесь я включил style.cssи custom.jsв который мы добавим связанный код. Поскольку мы собираемся использовать Ajax, я включил библиотеку jQuery.

Чтобы дать базовый интерфейс для нашего загрузчика файлов, давайте добавим некоторые свойства CSS. Конечно, вы можете добавить свой собственный CSS, чтобы по-другому взглянуть на загрузчик файлов.

style.css

#drop_file_zone {
    background-color: #EEE;
    border: #999 5px dashed;
    width: 290px;
    height: 200px;
    padding: 8px;
    font-size: 18px;
}
#drag_upload_file {
    width:50%;
    margin:0 auto;
}
#drag_upload_file p {
    text-align: center;
}
#drag_upload_file #selectfile {
    display: none;
}

После этого вы должны увидеть загрузчик файлов, как показано на скриншоте ниже:

Перетаскивание нескольких файлов для загрузки с помощью JavaScript и PHP

Перетаскивайте несколько файлов с помощью JavaScript и PHP

У вас установлен базовый интерфейс. Теперь мы можем написать реальный код для JavaScript и PHP, который загружает файлы на сервер. В наш HTML-код я добавил 2 метода upload_file() и file_explorer (), которые получают вызов при перетаскивании файлов и выбирают файлы соответственно.

Давайте определим эти методы и передадим файлы в серверный скрипт, который загружает файлы на сервер.

custom.js

var fileobj;
function upload_file(e) {
    e.preventDefault();
    ajax_file_upload(e.dataTransfer.files);
}
 
function file_explorer() {
    document.getElementById('selectfile').click();
    document.getElementById('selectfile').onchange = function() {
        files = document.getElementById('selectfile').files;
        ajax_file_upload(files);
    };
}
 
function ajax_file_upload(file_obj) {
    if(file_obj != undefined) {
        var form_data = new FormData();
        for(i=0; i<file_obj.length; i++) {  
            form_data.append('file[]', file_obj[i]);  
        }
        $.ajax({
            type: 'POST',
            url: 'ajax.php',
            contentType: false,
            processData: false,
            data: form_data,
            success:function(response) {
                alert(response);
                $('#selectfile').val('');
            }
        });
    }
}

Наконец, напишите серверный код для загрузки файла в ajax.phpфайл.

ajax.php

<?php
foreach($_FILES['file']['name'] as $key=>$val){
    $file_name = $_FILES['file']['name'][$key];
 
    // get file extension
    $ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
 
    // get filename without extension
    $filenamewithoutextension = pathinfo($file_name, PATHINFO_FILENAME);
 
    if (!file_exists(getcwd(). '/uploads')) {
        mkdir(getcwd(). '/uploads', 0777);
    }
 
    $filename_to_store = $filenamewithoutextension. '_' .uniqid(). '.' .$ext;
    move_uploaded_file($_FILES['file']['tmp_name'][$key], getcwd(). '/uploads/'.$filename_to_store);
}
echo "File(s) uploaded successfully";
die;

Этот код создает на вашем сервере каталог загрузок и сохраняет все файлы внутри этого каталога. При хранении файлов на сервере мы заботимся о сохранении уникального имени для каждого загруженного файла с помощью функции PHP uniqid().

Все дело в загрузке нескольких файлов с помощью функции перетаскивания. Надеюсь, вы узнали об этом. Я хотел бы услышать ваши мысли и предложения в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее