1

我正在尝试发送两种形式,一种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);
    }
}
?>
4

2 回答 2

4

这就是它在 HTML 中的工作方式。您一次只能发送一份表格。唯一的解决方法是仅使用一种形式发送所有数据。

于 2013-03-22T11:57:56.477 回答
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);
     }
   }
}

?>

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

注意:为提交按钮提供不同的名称。然后可以从这两种形式中获取您希望的数据。

于 2013-03-22T12:13:11.927 回答