Intereting Posts
Назначить значение javascript переменной php Как автоматически сохранить выделение в ComboBox в MYSQL на PHP без кнопки отправки? сравнить часть строки, используя php Шифрование значения с помощью функции AES_ECRYPT MySQL, а затем передача его в строку URL, с использованием PHP Как запустить скрипт оболочки в PHP? Создание и приглашение группы к событию через график api PHP: Как отправить код ответа HTTP? Как получить переменные системной среды в PHP при запуске CLI и Apache2Handler? PHP, Как получить текущую дату в определенном формате multibyte strtr () -> mb_strtr () Загрузка Dropbox внутри скрипта взрывать и обрабатывать динамические массивы php Изменить регистр / Забыли пароль «ссылки на действия» URL-адреса, заголовки и изменить страницы ошибок. Тема Мой подключаемый модуль с плагином WordPress multisite Предупреждение: PDOStatement :: execute (): SQLSTATE : Недопустимый номер параметра: количество связанных переменных не совпадает с числом токенов в как получить контакты gmail, yahoomail, hotmail с помощью imap в php?

Множественная загрузка фотографий PHP

Я осмотрелся и изо всех сил пытался узнать, как загружать несколько изображений (.jpg / .png / etc). Для моей задачи я хотел загрузить 5 записей в базу данных. Пока я изо всех сил пытаюсь выгрузить 5 вместе в одной записи. Я использовал PHP с сайта Ws3, и он работает успешно, но этот код предназначен только для одного изображения.

PHP Code –

$allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 2000000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; } else { if (file_exists("upload/" . $_FILES["file"]["name"])) { } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . uniqid() . "_" . $_FILES["file"]["name"]); } } } else { $error = "Invalid file"; } 

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

 <label for="file">Filename:</label> <input type="file" name="file" id="file"> <input type="file" name="file" id="file"> <input type="file" name="file" id="file"> <input type="file" name="file" id="file"> <input type="file" name="file" id="file"> 

Любые советы очень признательны ребятам! ура

Сначала добавьте enctype="multipart/form-data" в вашу форму. Затем измените имена полей file на:

 <input type="file" name="file[]" id="file" > <input type="file" name="file[]" id="file" > <input type="file" name="file[]" id="file" > 

Это создаст массив представленных файлов. Теперь вы сможете сделать foreach в файлах. Быстрый пример:

 foreach ($_FILES['file']['name'] as $f => $name) { } 

Вокруг вашего существующего кода добавьте [$f] к каждой $_FILES["file"] . Поэтому $_FILES["file"]["size"] необходимо изменить на $_FILES["file"]["size"][$f] и так далее. В foreach я $_FILES["file"]["name"][$f] $name на $_FILES["file"]["name"][$f] , поэтому вместо него можно использовать $name .

Полный PHP-код, основанный на вашем скрипте:

 foreach ($_FILES['file']['name'] as $f => $name) { $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $name); $extension = end($temp); if ((($_FILES["file"]["type"][$f] == "image/gif") || ($_FILES["file"]["type"][$f] == "image/jpeg") || ($_FILES["file"]["type"][$f] == "image/jpg") || ($_FILES["file"]["type"][$f] == "image/png")) && ($_FILES["file"]["size"][$f] < 2000000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"][$f] > 0) { echo "Return Code: " . $_FILES["file"]["error"][$f] . "<br>"; } else { if (file_exists("upload/" . $name)) { } else { move_uploaded_file($_FILES["file"]["tmp_name"][$f], "upload/" . uniqid() . "_" . $name); } } } else { $error = "Invalid file"; } } 

В конце я бы предложил вам узнать больше о PHP на разных сайтах. W3schools легко, но и не самый лучший вариант. В качестве примера вы проверяете это:

  if ((($_FILES["file"]["type"][$f] == "image/gif") || ($_FILES["file"]["type"][$f] == "image/jpeg") || ($_FILES["file"]["type"][$f] == "image/jpg") || ($_FILES["file"]["type"][$f] == "image/png")) && ($_FILES["file"]["size"][$f] < 2000000) && in_array($extension, $allowedExts)) 

Но достаточно будет только массива, например:

  if ($_FILES["file"]["size"][$f] < 2000000 && in_array($extension, $allowedExts)) 

$_FILES["file"]["type"] не всегда возвращает тип, как ожидалось. Мы видим это много раз в аудио и видео файлах. Другое сообщение о SO о типах MIME, относящихся к скрипту W3schools: PHP: $ _FILES ["file"] ["type"] бесполезен

Прежде чем задавать новые вопросы в StackOverflow, выполните поиск. Я просто написал длинный ответ только для вас, но то же самое делалось уже много раз для такого вопроса. https://stackoverflow.com/search?q=multiple+upload+php

Надеюсь, он ответит на ваш вопрос, и удачи в изучении PHP.

Я думаю, проблема в вашем HTML … вместо пяти из них:

 <input type="file" name="file" id="file"> 

Попробуйте сделать это следующим образом:

 <input type="file" name="file[]"> 

Это приведет к массиву файлов, а не к попытке отправить несколько файлов под одним и тем же именем ввода.

В качестве побочного примечания вы не должны использовать один и тот же атрибут id более чем для одного элемента. Возможно, вы хотели использовать класс?