Как загрузить несколько файлов в несколько полей формы с помощью php
У меня есть форма, где более 20 полей имеют тип файла и каждое поле имеет несколько вложений. Так, как я могу загрузить несколько файлов каждого поля и сохранить URL-адрес файлов в базе данных MySQL.
Я сделал что-то вроде множественного присоединения поля. Создано 2 таблицы, где tableA имеет данные формы, а tableB имеет файлы url с table1 parent_id.
Но как я могу обрабатывать более 20 полей с несколькими вложениями. Является ли это возможным? Заранее спасибо.
1 ответ
Я установил пример с 2 изображениями (2 поля ввода) и 1 PDF-файл одновременно
Итак, я предполагаю, что у вас будут все входные файлы в вашей HTML-разметке, что-то вроде этого:
<input type="file" name="PDF">
<input type="file" name="MainImage">
<input type="file" name="SecondImage[]">
В этом случае, чтобы вставить путь к файлу загруженного файла в базу данных, что-то вроде этого должно работать:
$uploadMainTo = null;
if(isset($_FILES['MainImage'])){
$main_image_name = $_FILES['MainImage']['name'];
$main_image_size = $_FILES['MainImage']['size'];
$main_image_tmp = $_FILES['MainImage']['tmp_name'];
$uploadMainTo = $uploadLocation.$main_image_name;
$moveMain = move_uploaded_file($main_image_tmp,$uploadMainTo);
}
$uploadSecondTo = array();
if(count(array_filter($_FILES['SecondImage']))>0){
foreach(array_filter($_FILES['SecondImage']) as $value){
$second_image_name = $value['name'];
$second_image_size = $value['size'];
$second_image_tmp = $value['tmp_name'];
$uploadSecondTo[] = $uploadLocation.$second_image_name;
$moveSecond = move_uploaded_file($second_image_tmp,$uploadSecondTo);
}
$uploadSecondTo = implode(',',$uploadSecondTo);
}
$uploadPdfTo = null;
if(isset($_FILES['PDF'])){
$pdf_name = $_FILES['PDF']['name'];
$pdf_size = $_FILES['PDF']['size'];
$pdf_tmp = $_FILES['PDF']['tmp_name'];
$uploadPdfTo = $uploadLocation.$pdf_name;
$movepdf = move_uploaded_file($pdf_tmp,$uploadPdfTo);
}
$query = $db->execute("INSERT INTO users (pdf, main_image, second_image) VALUES (?,?,?) WHERE ID = ?", array($uploadPdfTo, $uploadMainTo, $uploadSecondTo, $user_id) );
Я просто не уверен, что мне нужно инициализировать переменные $uploadXTo с помощью NULL или NULL. Если у вас есть проблемы, пожалуйста, проверьте этот способ.
NB Не забудьте использовать enctype="multipart/form-data" в вашей форме
Надеюсь, что это поможет вам