【问题标题】:php http request content raw data enctype=multipart/form-data [duplicate]php http请求内容原始数据enctype = multipart/form-data [重复]
【发布时间】:2013-10-31 13:19:41
【问题描述】:

我目前正在编写两个类:HttpRequest 和 HttpResponse。 我想编写自己的 HTTP 类。

我在使用带有 enctype=multipart/form-data 的表单的 POST 方法时遇到问题:我无法获取请求内容。

经过长时间的研究和搜索,我发现我必须使用file_get_contents("php://input") 来获取请求内容。 当我测试它时,我有一个空字符串var_dump(file_get_contents("php://input"))

我无权访问服务器/php 配置。

我正在使用以下代码进行测试:

<?php
$input = file_get_contents('php://input');
var_dump($input);
?>
<html>
<body>
<form action="./" method="post" enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="text" name="namen" id="nameid" /><br/>
    <input type="file" name="file" id="file"><br>
    <input type="file" name="file2" id="file2"><br>
    <input type="submit" name="submit" value="Submit">
</form>
</body>
</html>

提交后,我得到了这个结果:string(0) ""。 这很明显,因为 php://input 不适用于 enctype=”multipart/form-data” 表单。

我想要类似的东西:

-----------------------------19972703421793859182225487886
Content-Disposition: form-data; name="namen"

ds
-----------------------------19972703421793859182225487886
Content-Disposition: form-data; name="file"; filename="toto.xml"
Content-Type: text/xml

<?xml version="1.0" encoding="UTF-8"?>
<Toto></Toto>

-----------------------------19972703421793859182225487886
Content-Disposition: form-data; name="file2"; filename=""
Content-Type: application/octet-stream


-----------------------------19972703421793859182225487886
Content-Disposition: form-data; name="submit"

Submit
-----------------------------19972703421793859182225487886--

它适用于任何请求方法吗?还是我错了?

【问题讨论】:

    标签: php forms http request


    【解决方案1】:

    php://input 不适用于 enctype="multipart/form-data"。 http://php.net/manual/en/wrappers.php.php

    【讨论】:

      【解决方案2】:

      我在这里寻找一个显而易见的问题:为什么还要费心尝试自己解析这个?数据在您的范围内,只需使用 $_POST[] / $_FILES[] ..

      您仍然可以围绕这些值构建自己的类,而不是让您自己的类尝试完成与 php 编译器已经为您完成的相同的数据数组。

      为了给你一个有效的答案:我不知道有什么方法可以让你的 php://input 回来,因为它可能被 PHP 编译器读取,因此你在流的末尾(另外:它是只读的,因此可能无法将指针重置为流的开头)。

      【讨论】:

      • 我只想说:我很笨。谢谢;)
      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      相关资源
      最近更新 更多