«
»
WEBWordPressWP - PHPВсе для разработки плагинов

Загрузка нескольких файлов с использованием HTML и PHP

Вы пытаетесь загрузить несколько файлов одновременно? Вот как реализовать загрузку нескольких файлов с использованием HTML и PHP.

В этой статье я собираюсь показать, как использовать один HTML-файл для загрузки нескольких файлов. В дополнение к этому я продемонстрирую использование нескольких файловых входов с дополнительными полями ввода.

Реализация загрузки нескольких файлов

Во-первых, вам нужно создать HTML- форму с атрибутом enctype = ‘multiple / form-data’ . Фактически, атрибут enctype указывает, как данные формы должны быть закодированы при отправке их на сервер. Когда вы используете формы, которые имеют элемент управления загрузкой файлов, вам нужно указать enctype как множественные / form-data .

Если вы используете ввод одного файла, вам нужно включить элемент file для выбора нескольких файлов. Чтобы сделать это, вам нужно назвать входной файл в виде массива, например. имя = “файлы []” . Кроме того, элемент «Файл ввода» должен иметь несколько = «несколько» или просто несколько.

Форма HTML будет выглядеть следующим образом:

<form action="" method="post" enctype="multipart/form-data"> <label> Select Files: </label> <input type="file" name="fileUpload[]" multiple > <input type="submit" name="Submit" value="Upload" > </form>

Когда пользователь отправляет форму после выбора файлов, мы можем обработать форму с помощью простых фрагментов PHP следующим образом:

<?php // Set Upload Path $target_dir = 'files/'; if( isset($_FILES['fileUpload']['name'])) { $total_files = count($_FILES['fileUpload']['name']); for($key = 0; $key < $total_files; $key++) { // Check if file is selected if(isset($_FILES['fileUpload']['name'][$key]) && $_FILES['fileUpload']['size'][$key] > 0) { $original_filename = $_FILES['fileUpload']['name'][$key]; $target = $target_dir . basename($original_filename); $tmp = $_FILES['fileUpload']['tmp_name'][$key]; move_uploaded_file($tmp, $target); } } } ?>

Проверка типа файла и размера файла

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

// Get the extension $ext = strtolower(pathinfo($_FILES["fileUpload"]["name"][$key], PATHINFO_EXTENSION)); // check extension and upload if( in_array( $ext, array('jpg', 'jpeg', 'png', 'gif', 'bmp'))) { // Filetype if valid, process uploading }

Чтобы проверить размер файла, вы можете использовать $ _FILES [‘image’] [‘size’] следующим образом:

$maxFileSize = 5 * 1024 * 1024; //5MB $errors = array(); if($_FILES['fileUpload']['size'][$key] > $maxFileSize){ $errors[$key] = 'File size is greater than allowed size'; }

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

if(isset($_FILES['fileUpload']['name'][$key]) && $_FILES['fileUpload']['size'][$key] > 0) { $original_filename = $_FILES['fileUpload']['name'][$key]; // Get the fileextension $ext = pathinfo($original_filename, PATHINFO_EXTENSION); // Get filename without extesion $filename_without_ext = basename($original_filename, '.'.$ext); // Generate new filename $new_filename = str_replace(' ', '_', $filename_without_ext) . '_' . time() . '.' . $ext; // Upload the file with new name move_uploaded_file($_FILES['fileUpload']['tmp_name'][$key], $target_dir . $new_filename); }

Загрузка нескольких файлов с дополнительной информацией

Иногда требуется загрузить несколько файлов с дополнительной информацией, такой как заголовок, описание и т.д. В таких случаях вам необходимо использовать несколько элементов управления вводом файлов.

Загрузка нескольких файлов с использованием PHP

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

<form action="" method="post" enctype="multipart/form-data"> <input type="text" name="title[]" placeholder="Title" > <input type="file" name="fileUpload[]" > <input type="text" name="title[]" placeholder="Title" > <input type="file" name="fileUpload[]" > <input type="text" name="title[]" placeholder="Title" > <input type="file" name="fileUpload[]" > <input type="text" name="title[]" placeholder="Title" > <input type="file" name="fileUpload[]" > <input type="submit" name="Submit" value="Upload" > </form>

Как видите, есть несколько элементов управления вводом текста и файлов. Добавляя ‘[]’ к вашим именам входных элементов, входные элементы будут передаваться как массивы.

Когда вы отправляете вышеуказанную форму, $ _POST [‘title’] будет массивом. Сопоставляя индекс массива $ _POST [‘title’] с $ _FILES [‘fileUpload’] [‘name’], вы можете получить соответствующий заголовок, пару имен файлов. Например, $ _POST [‘title’] [0] – это заголовок файла $ _FILES [‘fileUpload’] [‘name’] [0] и так далее.

Таким образом, вы можете реализовать несколько загрузок файлов с использованием HTML и PHP.

Источник записи: https://thedebuggers.com

Связанные записи
WoocommerceWordPressПлагины

Дропшиппинг: Как импортировать продукты AliExpress в WooCommerce при помощи плагина DropshipMe

WoocommerceWordPressПлагины

8 лучших плагинов для WooCommerce Dropshipping для AliExpress и не только (Или дропшиппинга на WordPress)

ElementorWordPressПлагины

6 лучших плагинов для повышения конверсий на целевых страницах WordPress

FacetWPWordPressПлагины

Добавление параметров сортировки в FacetWP