PHP处理multipart / form-data

时间:2014-12-30 09:52:07

标签: php html

对不起标题,因为我不知道如何命名这个问题。请考虑以下代码

<?php
var_dump($_POST);
?>
<form name="submit_form" id="submit_form" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="update" value="y">
    <input type="file" name="supplement_file" id="supplement_file" class="btn_general" />
    <input type="submit" />
</form>

这是一个只需打印提交信息的PHP。第一次运行,它显示为空,这是有道理的。但是,在我单击提交后,它仍然显示为空。但是已经设置了请求有效负载。我可以通过控制台中的网络选项卡看到它。

------WebKitFormBoundaryO78Y428dBFHmIDbk
Content-Disposition: form-data; name="update"

y
------WebKitFormBoundaryO78Y428dBFHmIDbk
Content-Disposition: form-data; name="supplement_file"; filename="supplement2.wmv"
Content-Type: video/x-ms-wmv


------WebKitFormBoundaryO78Y428dBFHmIDbk--

我希望在提交此表单后能看到"update"="y"

我使用PHP 5.3是问题吗?内容类型很奇怪。此提交中为Content-Type:text/html。我错过了什么吗?

更新

请求的标头信息

Connection:Keep-Alive
Content-Length:369
Content-Type:text/html
Date:Tue, 30 Dec 2014 10:01:22 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By:PHP/5.3.5

3 个答案:

答案 0 :(得分:3)

请打开php.ini文件并搜索以下两行:

; Maximum size of POST data that PHP will accept. post_max_size = 8M

将post_max_size增加到更高的值。

答案 1 :(得分:0)

是的,我可以看到"update"="y"。它工作得很好!!!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <title>Untitled Document</title>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>

<body>
  <?php
    if($_POST){
      var_dump($_POST);
    };
  ?>
  <form name="submit_form" id="submit_form" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="update" value="y">
    <input type="file" name="supplement_file" id="supplement_file" class="btn_general" />
    <input type="submit" />
  </form>
</body>
</html>

答案 2 :(得分:0)

请将动作添加到表单中,然后尝试。

表单需要在HTML4中具有action属性。如果未设置,浏览器可能会使用与向其提供空字符串相同的方法。你真的应该设置action =&#34;&#34;这是完全有效的HTML4,遵循标准,并获得相同的结果。

<?php
var_dump($_POST);
?>
<form action="" name="submit_form" id="submit_form" method="POST" enctype="multipart/form-data" >
    <input type="hidden" name="update" value="y">
    <input type="file" name="supplement_file" id="supplement_file" class="btn_general" />
    <input type="submit" />
</form>