html中的多个表单,enctype =“multipart / form-data”

时间:2013-03-22 11:56:02

标签: php html html5

我正在尝试发送两个表单,一个用enctype="multipart/form-data"进行文件上传,另一个没有。我的问题只是其中一个正在工作。提交按钮不会发送两个表单。

我尝试了什么:

<?php
echo '<form method="post" action="' . $PHP_SELF . '">';

....

echo '<input type="submit" name="submit" value="Submit"><br>';
echo "</form>";

echo '<form action="' . $PHP_SELF . '" method="post" enctype="multipart/form-data"> 
      <label for="file">Filename:</label>
      <input type="file" name="file" id="file"><br>
      <input type="submit" name="submit" value="Submit"></form>';

if (isset($_FILES["file"]["name"])){
    $file_name = $_FILES['file']['name'];

    if ($_FILES["file"]["error"] > 0) {
        echo "Error: " . $_FILES["file"]["error"] . "<br>";
    } else {
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "Type: " . $_FILES["file"]["type"] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        echo "Stored in: " . $_FILES["file"]["tmp_name"];
        move_uploaded_file($_FILES['file']['tmp_name'], '../images/' . $file_name);
    }
}
?>

2 个答案:

答案 0 :(得分:4)

这是它在HTML中的工作原理。您一次只能发送一个表单。唯一的解决方法是使用一个表单发送所有数据。

答案 1 :(得分:1)

只需尝试使用以下内容:

<?php
echo '<form method="post" action="' . $PHP_SELF . '">';

....

echo '<input type="submit" name="Submit_Button_One" value="Submit"><br>';
echo '</form>';

echo '<form action="' . $PHP_SELF . '" method="post" enctype="multipart/form-data"> 
      <label for="file">Filename:</label>
      <input type="file" name="file" id="file"><br>
      <input type="submit" name="Submit_Button_Two" value="Submit"></form>';

/*First Form Submit*/

if(isset($_POST['Submit_Button_One']))
{
$dataValue = $_POST['data'];    
}

/*Second Form Submit*/

if(isset($_POST['Submit_Button_Two']))
{
  if(isset($_FILES["file"]["name"])){

     $file_name = $_FILES['file']['name'];

     if($_FILES["file"]["error"] > 0) {
        echo "Error: " . $_FILES["file"]["error"] . "<br>";
     }  else {
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "Type: " . $_FILES["file"]["type"] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        echo "Stored in: " . $_FILES["file"]["tmp_name"];
        move_uploaded_file($_FILES['file']['tmp_name'], '../images/' . $file_name);
     }
   }
}

?>

我认为这可以帮助您解决问题。

注意:为提交按钮指定不同的名称。然后就可以从两个表格中获得所需的数据。