我在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