Как загрузить несколько файлов в несколько полей формы с помощью php - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть форма, где более 20 полей имеют тип файла, и каждое поле имеет несколько вложений.Итак, как я могу загрузить несколько файлов в каждое поле и сохранить URL-адрес файла в базе данных mysql.

Я сделал что-то вроде множественного присоединения поля.Создано 2 таблицы, где tableA имеет данные формы, а tableB имеет файлы url с table1 parent_id.

Но как мне обработать 20+ полей с несколькими вложениями.Является ли это возможным?Заранее спасибо.

1 Ответ

0 голосов
/ 17 декабря 2018

Я установил пример с двумя изображениями (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'.Если у вас есть проблемы, пожалуйста, проверьте этот способ.

NB Не забудьте использовать enctype = "multipart / form-data" в вашей форме

Надеюсьэто поможет вам

...