我在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请求参数?
答案 0 :(得分:1)
正如我刚刚在手册中看到的那样,enctype =“multipart / form-data”不提供原始发布数据,但您也可以尝试使用
$fp = fopen('php://stdin', 'rb');
请注意“ b ”标志。
另外,请确保php.ini中的 always_populate_post_data = On
答案 1 :(得分:1)
$_FILES
变量中有什么内容吗?
提交的表单中是否有MAX_FILE_SIZE
元素?
这里有什么价值?
echo 'post_max_size = ' . ini_get('post_max_size') . "\n";
echo 'upload_max_filesize = ' . ini_get('upload_max_filesize') . "\n";