php - 命名表单上的多个文件输入字段

时间:2017-01-18 04:44:59

标签: php html forms file

我希望在一个可以插入文件的表单上有多个字段。

我有以下脚本,但我希望能够在保存的名称中识别插入文件所属的字段。

<form action="" method="post" enctype='multipart/form-data' id="form" name="form">

  Input 1<input type="file" name="upload[]" >
  Input 2<input type="file" name="upload[]" >
  Input 3<input type="file" name="upload[]" >

  <button id="submit-button">Upload</button>

</form>


<?php

//if(isset($_POST['submit']) && !empty($_POST) ){
$count = 0;
$max_file_size = 5000000;
  if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){
  // Loop $_FILES to exeicute all files

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

      $path = 'documents'; //path of directory

      if ($_FILES['upload']['error'][$f] == 4) {
          continue; // Skip file if any error found
      } else {
          if ($_FILES['upload']['size'][$f] > $max_file_size) {
              $message[] = "$name is too large!.";
              continue; // Skip large files
          }
          else {
              // No error found! Move uploaded files
              //$name_of_file = $_FILES['username']['name'][$f];
              $temp_name = $_FILES['upload']['tmp_name'][$f]; //[$count];
              move_uploaded_file($temp_name, "$path/"."$name");
              $count++; // Number of successfully uploaded file
          }
      }
  }
  }

目前它只是将文件保存到一个位置,因此我无法区分它们并确定它们来自哪个字段。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我已经解决了。我已经上面的注释并在每个文件字段中放置了一个文本输入字段。如果您需要设置名称,这些也可以是隐藏字段。

然后我滚动它们并保存名称并在服务器端应用这些名称。

感谢评论,他们帮我看了解决方案。

<form action="" method="post" enctype='multipart/form-data' id="form" name="form">

  <input type="text" name="input0" value=""><input type="file" name="upload[]" ><br><br>
  <input type="text" name="input1" value=""><input type="file" name="upload[]" ><br><br>
  <input type="text" name="input2" value=""><input type="file" name="upload[]" ><br><br>

  <button id="submit-button">Upload</button>

</form>


<?php

$count = 0;
$max_file_size = 500000000000;
  if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){
  // Loop $_FILES to exeicute all files


$x = 0;
$input = "input";


while ($x <= 2){

$field_name = $input.$x;

$field[$x] = $_POST[$field_name];

$x++;
}

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

      $path = 'documents'; //path of directory

      if ($_FILES['upload']['error'][$f] == 4) {
          continue; // Skip file if any error found
      } else {
          if ($_FILES['upload']['size'][$f] > $max_file_size) {
              $message[] = "$name is too large!.";
              continue; // Skip large files
          }
          else {
              $temp_name = $_FILES['upload']['tmp_name'][$f]; //[$count];
              move_uploaded_file($temp_name, "$path/"."$field[$count]"."$name");
              $count++; // Number of successfully uploaded file
          }
      }
  }
  }