我有一个将文件提交到端点的表单。理论上,端点接收文件并将其附加到另一个发送到API的发布请求。
我试图弄清楚如何使用Laravel并阅读一些暗示它不可能的事情?唯一的解决方案是将其保存在公共场所并将链接提交给API。有人能够对此有所了解吗?下面是我认为可以工作但不发送文件的代码。
$this->client->post('/api/endpoint', ['form_params' => ['file' => $request->file('file')->getRealPath()]])
客户是Guzzle客户。
答案 0 :(得分:3)
是的。 Guzzle Docs
$client->request('POST', '/post', [
'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'
],
]
]);
答案 1 :(得分:0)
API处理文件上传似乎相当罕见,因为这通常是一个人所做的事情。如果我要做这样的事情,我会首先阅读文件的内容并对其进行base64编码。然后使用base64编码的文件内容作为字符串发送正常的Http POST请求。在API上,您可以对其进行解码,并根据文件执行任何操作。
在PHP中处理base64非常简单http://php.net/manual/en/function.base64-encode.php