使用Guzzle 4 POST multipart / form-data

时间:2014-07-14 19:05:52

标签: php guzzle

我使用的是Guzzle 4,我希望使用multipart / form-data POST文件。我不确定哪种方法是正确的。

我试过了:

$client = new GuzzleHttp\Client();

$request = $client->createRequest('POST', 'https://127.0.0.1/1/files/', ['json' => ['id' => 'dc51bfe4-92af-483d-80c4-f2da4cafa723'], 'cookies' => true]);

$request->getBody()->addFile(new PostFile('a.pdf', fopen('a.pdf', 'rb')));
$response = $this->client->send($request);

我收到此错误:

Fatal error: Call to undefined method GuzzleHttp\Stream\Stream::addFile()

如果我用addPostFile替换addFile,也会发生同样的情况。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

从未使用过Guzzle,但我尝试了这段代码,并且能够通过替换

来修复它
$request = $client->createRequest('POST', 'https://127.0.0.1/1/files/', ['json' => ['id' => 'dc51bfe4-92af-483d-80c4-f2da4cafa723'], 'cookies' => true]);

用这个

$request = $client->createRequest('POST', 'https://127.0.0.1/1/files/', ['cookies' => true]);

您可以在createRequest之后传递json数据。您应该查看Guzzle文档。

此外,您似乎同时使用$client$this->client。我想你应该坚持两个中的一个。