Post Multipart 和 Json 以及 Laravel 中的 Guzzle
Post Multipart and Json together with Guzzle in Laravel
我正在尝试 POST 多部分和 json 数据与 Guzzle to build my apps with Phonegap Build API。我尝试了很多调整,但仍然得到错误结果。这是我使用的最新功能:
public function testBuild(Request $request)
{
$zip_path = storage_path('zip/testing.zip');
$upload = $this->client->request('POST', 'apps',
['json' =>
['data' => array(
'title' => $request->title,
'create_method' => 'file',
'share' => 'true',
'private' => 'false',
)],
'multipart' =>
['name' => 'file',
'contents' => fopen($zip_path, 'r')
]
]);
$result = $upload->getBody();
return $result;
}
这是我的正确 curl 格式,已从 API 获得成功结果,但我的桌面上有文件:
curl -F file=@/Users/dedenbangkit/Desktop/testing.zip
-u email@email.com
-F 'data={"title":"API V1 App","version":"0.1.0","create_method":"file"}'
https://build.phonegap.com/api/v1/apps
如前所述,您不能同时使用 multipart
和 json
。
在您的 curl
示例中,它只是一个多部分表单,因此在 Guzzle 中使用相同的表单:
$this->client->request('POST', 'apps', [
'multipart' => [
[
'name' => 'file',
'contents' => fopen($zip_path, 'r'),
],
[
'name' => 'data',
'contents' => json_encode(
[
'title' => $request->title,
'create_method' => 'file',
'share' => 'true',
'private' => 'false',
]
),
]
]
]);
我正在尝试 POST 多部分和 json 数据与 Guzzle to build my apps with Phonegap Build API。我尝试了很多调整,但仍然得到错误结果。这是我使用的最新功能:
public function testBuild(Request $request)
{
$zip_path = storage_path('zip/testing.zip');
$upload = $this->client->request('POST', 'apps',
['json' =>
['data' => array(
'title' => $request->title,
'create_method' => 'file',
'share' => 'true',
'private' => 'false',
)],
'multipart' =>
['name' => 'file',
'contents' => fopen($zip_path, 'r')
]
]);
$result = $upload->getBody();
return $result;
}
这是我的正确 curl 格式,已从 API 获得成功结果,但我的桌面上有文件:
curl -F file=@/Users/dedenbangkit/Desktop/testing.zip
-u email@email.com
-F 'data={"title":"API V1 App","version":"0.1.0","create_method":"file"}'
https://build.phonegap.com/api/v1/apps
如前所述,您不能同时使用 multipart
和 json
。
在您的 curl
示例中,它只是一个多部分表单,因此在 Guzzle 中使用相同的表单:
$this->client->request('POST', 'apps', [
'multipart' => [
[
'name' => 'file',
'contents' => fopen($zip_path, 'r'),
],
[
'name' => 'data',
'contents' => json_encode(
[
'title' => $request->title,
'create_method' => 'file',
'share' => 'true',
'private' => 'false',
]
),
]
]
]);