如何使用Guzzle通过POST请求从URL发送文件



当我以这种方式测试时,我使用的端点运行良好:

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,
]
]
]);

您要做的是破坏一些http协议。

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

要么你从url下载文件,并将其内容包含在你的请求中,

发送url并在服务器上使用代码逻辑下载。

最新更新