我目前正在编写两个类: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://输入不适用于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--
它是否适用于任何请求方法?或者我错了吗?
答案 0 :(得分:7)
php://输入不适用于enctype =“multipart / form-data”。 http://php.net/manual/en/wrappers.php.php
答案 1 :(得分:6)
我在这里寻找明显的一个:为什么甚至懒得试图自己解析这个?数据在您的范围内,易于使用$ _POST [] / $ _FILES [] ..
您仍然可以围绕这些值构建自己的类,而不是让自己的类尝试完成与php编译器已经为您完成的相同的数据数组。
为了给你一个有效的答案:我不知道如何获得你的php://输入,因为它可能是由PHP编译器读取的,因此你就是在stream(加上:它是只读的,因此可能无法将指针重置为流的开头)。