我应该如何发送文件到lazzle中的api服务器由Guzzle客户端
问题描述:
请问我应该如何发送一个文件上传到api上?我应该如何发送文件到lazzle中的api服务器由Guzzle客户端
在API服务器,我们有一个POST方法,它给出了两个参数:查询 一个name
和formData
一个文件,那么它提供了一个链接作为响应体。 我要通过客户端狂饮这种格式发送文件:
$file = $request->file('InputFile');
$file_path = $file->getPathname();
$response = $this->CX_Client->post('/file/upload?name='.$fileName, [
'formData' =>
[
'file' =>
[
'name' => 'InputFile',
'contents' => fopen($file_path, 'r'),
'filename' => $fileName
]
]
]);
但是,这并不工作,并在此请求服务器无法找到它的参数。我怎么了?
答
您应该使用的multipart
代替formData
https://guzzle.readthedocs.io/en/latest/request-options.html#multipart
$response = $this->CX_Client->post('/file/upload?name='.$fileName, [
'multipart' => [
[
'name' => 'foo',
'contents' => 'data',
'headers' => ['X-Baz' => 'bar']
],
[
'name' => 'baz',
'contents' => fopen('/path/to/file', 'r')
],
[
'name' => 'qux',
'contents' => fopen('/path/to/file', 'r'),
'filename' => 'custom_filename.txt'
],
]
]);