使用Guzzle从PHP发送多部分表单

时间:2019-03-08 19:23:39

标签: php api guzzle

我正在尝试为API中的上传文件创建多部分表单。 根据guzzle的文档:

\\$data = picture of form
\\$uri = Endpoint in my API
$this->client->post($uri, [
     'multipart' => [
        [
          'name' => 'picture',
          'contents' => file_get_contents($data),
        ]
      ],
      'headers' => $headers
]);

当我使用失眠或邮递员时: enter image description here

我不明白为什么它在Guzzle中不起作用。

1 个答案:

答案 0 :(得分:0)

$file = new File($data->getPathname());
        $tmp_picture_path = Storage::putFile("temp_dir", $file);
        $tmp_picture = Storage::readStream($tmp_picture_path);
        $response = $this->client->post(
            $uri,
            [
                'multipart' => [
                    [
                        'name' => 'picture',
                        'contents' => $tmp_picture,
                        'filename' => "avatar." . $data->getClientOriginalExtension()
                    ]
                ],
                'headers' => $headers
            ]
        );
        Storage::delete($tmp_picture_path);

只需将文件保存在本地并阅读流dor即可正确发送。