输入流 php://input
Last updated
Last updated
仅在取值为application/x-www-data-urlencoded
和multipart/form-data
时(文件上传时),php会将http请求body相应数据会填入到数组$_POST,填入到$_POST数组中的数据是进行urldecode()解析的结果。
只要Content-Type不为multipart/form-data
, php://input
会填入post数据。
仅当Content-Type为application/x-www-form-urlencoded
且提交方法是POST方法时,$_POST数据与php://input
数据才是一致的。
php://input
可以读取没有处理过的POST数据。相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小。
$HTTP_RAW_POST_DATA(This feature has been DEPRECATED as of PHP 5.6.0. 被废弃了,查看官方文档)
更多php://input,查看官方文档
解析
情况1: 文件上传时,form的
enctype="multipart/form-data",
此时,数据php://input
获取不到数据测试结果 只有
$_POST
获取了数据array (size=2)
'name' => string 'test' (length=4)
'submit' => string 'Submit' (length=6)
情况2: 非文件上传时的form表单
测试结果:两者都会获取数据
情况3 :postman 直接发送json body 体, 也就是api的场景
测试结果:只有
php://input
获取到了数据