【问题标题】:Is it possible to attach an uploaded file to http request?是否可以将上传的文件附加到 http 请求?
【发布时间】:2017-12-09 15:54:57
【问题描述】:

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

我试图弄清楚如何使用 Laravel 做到这一点,并阅读了一些表明这是不可能的东西?唯一的解决方案是将其保存在公共场所并将链接提交给 API。任何人都可以对此有所了解吗?下面是我认为可以工作但不发送文件的代码。

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

客户端是 Guzzle 客户端。

【问题讨论】:

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


    【解决方案1】:

    是的。 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'
            ],
        ]
    ]);
    

    【讨论】:

    • 呃。我通常在精神上停留在谷歌 php 的东西上,并没有想到要浏览 guzzle 文档。谢谢!
    【解决方案2】:

    API 处理文件上传似乎并不常见,因为这通常是一个人做的事情。如果我要做这样的事情,我会首先读取文件的内容并对其进行 base64 编码。然后以字符串形式发送带有 base64 编码文件内容的普通 Http POST 请求。在 API 上,您可以对其进行解码并对文件执行任何您需要的操作。

    在 PHP 中处理 base64 相当简单http://php.net/manual/en/function.base64-encode.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多