【问题标题】:How to send a file from URL through POST request using Guzzle如何使用 Guzzle 通过 POST 请求从 URL 发送文件
【发布时间】:2023-09-11 04:12:01
【问题描述】:

当我以这种方式测试时,我正在使用的端点工作正常:

curl -X POST ".../api/save" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "file=@test.xlsx;type=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"

现在我需要在 Laravel 中使用 Guzzle 发送文件,但我从 API 端点收到 400 Bad Request。文件存储在公共磁盘中,所以我发送 URL。

这是我目前所拥有的:

   $headers = [
            'Authorization' => 'Bearer ' . $token,
            'Accept' => 'application/json',
            'Content-Type' => 'multipart/form-data',
        ];

    $response = $this->client->request('POST', '.../api/save', [
        'headers' => $headers,
        'multipart' => [
            [
                'name' => 'image_file',
                'contents' => $file->url,
            ]
        ]
    ]);

【问题讨论】:

标签: php laravel guzzle


【解决方案1】:

您正在尝试做的是破坏一些 http 协议。

您不能在请求中发送资源链接并期望服务器在恢复请求处理之前下载它。

您可以从 url 下载文件并将其内容包含在您的请求中,

发送网址并在服务器上有代码逻辑进行下载。

【讨论】:

    最近更新 更多