解析多部分表单数据

2022-08-30 17:06:54

我正在尝试将一个具有两个字段的HTML POSTED表单放在一起 - 一个文件上传和一个文本字段。由于表单具有用于文件上传的多部分/表单数据类型,因此我无法通过正常的 PHP $_POST 变量获取文本字段。那么我如何使用PHP访问表单中的文本字段呢?

根据要求,这里有一些代码,基本上直接从Andrew获取:

<html>
    <body>
        <form action="test2.php" method="post" enctype="multipart/form-data">
            Name: <input type="text" name="imageName" />
            Image: <input type="file" name="image" />
            <input type="submit" value="submit" />
        </form>
    </body>
</html>

<?php
  echo $_POST['imageName'];
  echo "<pre>";
  echo var_dump($_FILES['image']);
  echo "</pre>";
?>

这就是整个测试文件。如果我删除 enctype,我可以获得 POST-ed 数据,但当然不能获取文件。使用enctype作为多部分/表单数据,我可以获取文件,但从POST-ed数据中获取任何内容。

下面是带有 enctype 的输出:

array(5) {
  ["name"]=>
  string(34) "testing.png"
  ["type"]=>
  string(0) ""
  ["tmp_name"]=>
  string(0) ""
  ["error"]=>
  int(1)
  ["size"]=>
  int(0)
}

没有:

testing

NULL

两次输入完全相同。


答案 1

文件上传通过 $_FILES。其他所有内容都来自 $_POST(当然,假设您的 HTML 表单的属性设置为 )。method"post"


答案 2

检查您的帖子限制。我发疯了,试图找出导致这种情况的原因。对Apache错误日志的快速检查显示帖子内容长度超过了限制。提高限制后,帖子数据可用。


推荐