是否可以将上传的文件附加到http请求?

时间:2017-07-05 20:25:25

标签: php forms laravel file-upload http-post

我有一个将文件提交到端点的表单。理论上,端点接收文件并将其附加到另一个发送到API的发布请求。

我试图弄清楚如何使用Laravel并阅读一些暗示它不可能的事情?唯一的解决方案是将其保存在公共场所并将链接提交给API。有人能够对此有所了解吗?下面是我认为可以工作但不发送文件的代码。

$this->client->post('/api/endpoint', ['form_params' => ['file' => $request->file('file')->getRealPath()]])

客户是Guzzle客户。

2 个答案:

答案 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