首页 > 解决方案 > 如何将 Laravel $request->file(...) 直接传递给 Guzzle POST 请求

问题描述

如何通过 POST 请求 传递$request->file(...)到?或者甚至有可能吗?我应该先上传吗?Guzzle

这是我的尝试:

$client = new Client([ 'base_uri' => 'http://api.domain.com']);
$response = $client->post(
        '/api/dosomething',
        [
            'multipart' => [
                [
                  'Content-type' => 'multipart/form-data',
                  'name' => 'photo_1',
                  'contents' => $request->file('photo_1')
                ]
            ]
         ]
); 

这是行不通的。响应正文只是空白。

标签: phplaravelguzzle

解决方案


我找到了下面的解决方案(我们需要在临时文件夹中用代码指定临时文件的路径$file->getPathName()):

$client = new Client([ 'base_uri' => 'http://api.domain.com']);
$file = $request->file('photo_1')
$response = $client->post(
        '/api/dosomething',
        [
            'multipart' => [
                [
                  'Content-type' => 'multipart/form-data',
                  'name' => 'photo_1',
                  'contents' => fopen($file->getPathName(), 'r')
                ]
            ]
         ]
); 

推荐阅读