【问题标题】:How to upload multiple files in several field of a form using php如何使用php在表单的多个字段中上传多个文件
【发布时间】:2018-12-17 10:54:12
【问题描述】:

我有一个表单,其中 20 多个字段是文件类型,每个字段都有多个附件。那么如何在每个字段上传多个文件并将文件 url 存储到 mysql 数据库中。

我做了类似一个字段的多个附件的事情。创建了 2 个表,其中 tableA 具有表单数据,而 tableB 具有带有 table1 parent_id 的文件 url。

但是我如何处理 20 多个字段和多个附件。可能吗? 提前致谢。

【问题讨论】:

标签: php mysql multiple-file-upload


【解决方案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) );

我只是不确定是否必须使用 null 或“NULL”初始化 $uploadXTo 变量。如果你有问题,请用这种方式测试。

注意不要忘记在表单上使用 enctype="multipart/form-data"

希望对您有所帮助

【讨论】:

  • 我已经提到每个字段都是多个附件。例如 MainImage 字段有多个附件用户可以上传任何东西 pdf、文档、图像、视频和其他字段(SecondImage)以及
  • 我刚刚更新了关于您在 SecondImage 上提到的主题的答案,因为您看到我已重命名 SecondImage[] 的文件并使其成为数组并通过 foreach 循环上传
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 2014-08-15
  • 2014-05-10
  • 1970-01-01
相关资源
最近更新 更多