如果请求超过1450 B,请在PHP中正确读取POST请求参数?

我在api.php脚本上收到POST请求.使用此代码的内容为红色:

$fp = fopen('php://stdin', 'r');
$all = "";
while($line = fgets($fp, 4096)) { 
    $all .= $line; 
}
echo $all;

看起来像这样:

------------V2ymHFg03ehbqgZCaKO6jy
Content-Disposition: form-data; name="intro"

O
------------V2ymHFg03ehbqgZCaKO6jy
Content-Disposition: form-data; name="title"

T
------------V2ymHFg03ehbqgZCaKO6jy
Content-Disposition: form-data; name="apiKey"

98d32fdsa
------------V2ymHFg03ehbqgZCaKO6jy
Content-Disposition: form-data; name="method"

/media/add
------------V2ymHFg03ehbqgZCaKO6jy
Content-Disposition: form-data; name="upload_field"; filename="original_filename.png"
Content-Type: image/png


------------V2ymHFg03ehbqgZCaKO6jy--

正如您所看到的,我得到4个名为intro,title,apiKey和method的参数,以及一个名为original_filename.png的文件,大小为1460字节.

不幸的是,我的$_POST数组是空的.当orginal_filename.png小于1450字节时,有什么奇怪的东西$_POST包含所有参数,而stdin是空的.

我希望能够像普通的人类PHP一样阅读这些字段来自$_POST.

怎么做才能从$_POST正确读取这个POST请求参数?

最佳答案 正如我刚刚在手册中看到的那样,enctype =“multipart / form-data”不提供原始发布数据,但您也可以尝试使用

$fp = fopen('php://stdin', 'rb');

请注意“b”标志.

另外,请确保php.ini中的always_populate_post_data = On

点赞