如何获得;php://input" 如果I';m使用内容类型多部分/表单数据
还有别的选择吗 我用它来测试我正在开发的API 我用POST发送了一个JSON。 在代码中,如何获得;php://input" 如果I';m使用内容类型多部分/表单数据,php,json,post,Php,Json,Post,还有别的选择吗 我用它来测试我正在开发的API 我用POST发送了一个JSON。 在代码中,$\u FILES可以,但是file\u获取内容(“php://input“”为空 如果我不发送任何文件,那么我可以使用file\u get\u contents(“php://input“” PHP版本:5.6.4最有可能访问超全局使用的任何POST/文件php://input 在任何情况下,如果发送JSON有效负载,则不能同时使用多部分formdata有效负载,因此$\u FILES应为空。如果您需要
$\u FILES
可以,但是file\u获取内容(“php://input“”
为空
如果我不发送任何文件,那么我可以使用file\u get\u contents(“php://input“”
PHP版本:5.6.4最有可能访问超全局使用的任何POST/文件
php://input
在任何情况下,如果发送JSON有效负载,则不能同时使用多部分formdata有效负载,因此$\u FILES
应为空。如果您需要在同一页面上处理这两个问题(IMO不太好),请确保在访问$\u文件
或php://input
php://input
是一种只读流,允许您读取原始数据
来自请求主体。对于POST请求,最好是
使用php://input
而不是$HTTP\u RAW\u POST\u数据
依赖于特殊的php.ini指令。此外,对于以下情况:
$HTTP_RAW_POST_数据
默认情况下不填充,它可能是
与激活相比,内存占用更少
始终填充\u原始\u发布数据
php://input
不适用于
enctype=“多部分/表单数据”。
由于HTTP_原始_POST_数据是,我猜您有点不走运。我不知道其他选择
编辑:嗯,你可以试试php://stdin
/STDIN
,虽然我不知道这是否适用于Web服务器中的PHP。。。也许就试试吧。正如幽灵赌徒所说,php://input 不适用于enctype=“多部分/表单数据”
您不应该将JSON作为文件附加到请求中,您应该将其作为请求主体添加到post请求中,设置内容类型
头(application/JSON)。然后它将在php://input
好的,所以我给我的JSON数据起了个名字,比如0=[{“q”:“w”}]
然后用$\u POST['0']
获取它。以及带有$\u文件的文件
以下是它在高级REST客户端中的外观:
我没有附加JSON文件,而是附加一个图像。我发送的JSON在请求正文中,这是您的问题。。一旦使用enctype=“多部分/表单数据”
,php://input
将保持为空。您不应该将二进制post数据与json内容相结合,而应该划分功能(REST和all)。基本上你有几个选择。。1.将图像发布到API>返回ID,使用所需ID发布json(元数据?)。将文件编码为base64(更大的大小),并将其发布到json文件中,解码并存储。不过我更喜欢选项1,稍微干净一点。