如何获得" php://输入"数据,如果我使用Countent-Type multipart / form-data

时间:2016-05-05 07:53:35

标签: php json post

有替代方案吗?

我使用Advanced Rest Client来测试我正在开发的API。

我发送了一个带有POST的JSON。 在代码中,$_FILES没问题,但file_get_contents("php://input")为空。

如果我没有发送任何文件,那么我可以使用file_get_contents("php://input")

PHP版本:5.6.4

4 个答案:

答案 0 :(得分:1)

正如GhostGambler所述,php://输入不适用于enctype =“multipart / form-data”。

您不应将JSON作为文件附加到您的请求中,您应该将其作为请求主体添加到post请求中,设置Content-Type标头(application / json)。然后它将在php://input中提供。

答案 1 :(得分:1)

好的,所以我最终为我的JSON数据命名,例如0=[{"q":"w"}],然后使用$_POST['0']获取它。以及$_FILES

的文件

以下是高级REST客户端的外观: enter image description here

答案 2 :(得分:0)

最有可能访问任何POST / FILES超全局消耗php://input

在任何情况下,如果您发送JSON有效负载,则您也不能拥有multipart-formdata有效负载,因此$_FILES应为空。如果您需要在同一页面上处理(错误的想法IMO),请确保在访问$_FILESphp://input <之前检查请求正文之外的内容类型标题或其他一些信息/ p>

答案 3 :(得分:0)

  

php://input是一个只读流,允许您读取原始数据   来自请求机构。在POST请求的情况下,它是可取的   使用php://input代替$HTTP_RAW_POST_DATA,而不是$HTTP_RAW_POST_DATA   依赖于特殊的php.ini指令。而且,对于那些情况   默认情况下不会填充always_populate_raw_post_data,它是潜在的   激活的内存密集程度较低   php://input php://stdin无效    ENCTYPE = “多部分/格式数据”

http://php.net/manual/de/wrappers.php.php

由于HTTP_RAW_POST_DATA是marked deprecated,我猜你有点不走运。我不知道其他选择。

编辑:嗯,您可以尝试STDIN / from bs4 import BeautifulSoup import re html = your_html_here soup = BeautifulSoup(html, "html5lib") links = soup.findAll('a', text=re.compile('^\s*\d+\s*$')) number = links[-1].string.strip() print number # 5 ,虽然我不知道这是否适用于网络服务器中的PHP ...也许只是尝试一下。