【问题标题】:Accessing file in PUT route Laravel在 PUT 路由 Laravel 中访问文件
【发布时间】:2015-02-05 14:49:57
【问题描述】:

我正在构建一个 REST API 端点,如下所示:(在 Laravel 4.2 中)

PUT /upload/{name}

这是 routes.php 中的 Route,它能够路由 PUT 请求。

Route::put('/upload/{name}', 'UploadController@upload')
->where('name', '[a-zA-Z0-9]+');

现在,此请求的内容必须包含要保存的文件。我正在使用以下curl 请求对端点进行初步测试。

curl -X PUT localhost/upload/filename -F filedata=@test.file

这就是PHP中读取数据的方式:

$blob = file_get_contents('php://input', 'r' );

这不是给我实际的文件,而是给我整个 HTTP 请求作为原始文本(预期的)。我什至尝试过parse_str(),但没有成功。

CLIPHP 中使用curl 发送PUT 请求并随后在PHP 中接收它们的方法是什么?我一直在为这种请求类型而苦恼。

【问题讨论】:

  • 您是否尝试过通过Input::file 访问您的文件? laravel.com/docs/4.2/requests#files
  • 这不是上传文件吗??但我想访问请求内容中的文件。
  • 您的文件必须先上传到服务器,然后您才能从请求中访问它。它们保存在 tmp 文件夹中,$POST['file']Input::file 是您可以访问它的一种方式。
  • 但我要求的是我想要请求的body 中的文件。
  • 试试$blob = Request::getContent()

标签: php curl laravel-4 put


【解决方案1】:

正如@lukasgeiter 在上面的 cmets 中正确所说: 这是解决方案:

    use Request;   // needed in Laravel 5  
    $request = Request::instance();    // fetch the request instance
    $content = $request->getContent();   // get the raw content

我已经验证了内容的长度,它与 PUT 的文件匹配。

【讨论】:

    猜你喜欢
    • 2018-12-22
    • 2018-05-23
    • 2014-07-12
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 2016-03-17
    • 2021-07-13
    • 2021-05-09
    相关资源
    最近更新 更多