【问题标题】:How do I get raw form data in Laravel?如何在 Laravel 中获取原始表单数据?
【发布时间】:2014-03-26 08:38:48
【问题描述】:

我有一个脚本正在尝试使用 HTTP PUT 将数据发送到我的站点。通常,我会通过使用file_get_contents('php://input') 从输入流中读取来检索它。但是,当我尝试使用 Laravel 时,我什么也没得到!为什么不?如何读取原始输入数据?

【问题讨论】:

    标签: php http laravel put


    【解决方案1】:

    Laravel 拦截所有输入。如果您使用 5.6 之前的 PHP,php://input 流只能读取一次。这意味着您需要从框架中获取数据。您可以通过访问Request 实例上的getContent 方法来做到这一点,如下所示:

    $content = Request::getContent(); // Using Request facade
         /* or */ 
    $content = $request->getContent(); // If you already have a Request instance
                                       // lying around, from say the controller  
    

    由于Illuminate\Request 扩展了Symfony\Component\HttpFoundation\Request,并且getContent 在这里定义:http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/Request.html#method_getContent

    【讨论】:

    • 我认为理论上你应该不需要获取实例,而可以直接使用外观:Request::getContent();
    • 我正在尝试将 XML 发送到 Laravel 并使用此功能,但它不起作用。
    • 非常感谢。 $content = request()->getContent(); 也可以。
    • 链接断了一半。它重定向到 GitHub 并且锚点 #method_getContent 根本不起作用。 #L1478 确实有效,但我不知道它有多稳定(或者它是否是预期的)。
    【解决方案2】:

    您还可以使用Request::json($key, $default); 返回 JSON 有效负载中特定键的值。

    【讨论】:

      【解决方案3】:

      最新 Laravel 更新(我使用的是 Laravel 5.8)

      在使用 Request::getContent(); 时可能会遇到错误,因为最新的 Symfony Request 模块(它是 Laravel 的 Request 模块的基础)不再提供 getContent 作为静态方法。相反,我使用Request::createFromGlobals()->getContent();

      参考:Accessing Request Data

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多