问题描述
以这种方式测试端点时,我正在使用的端点工作正常:
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错误请求。该文件存储在公用磁盘中,因此我正在发送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协议。
您无法在请求中发送资源链接,并希望服务器在恢复请求处理之前将其下载。
您可以从url下载文件,然后将其内容包含在请求中,
OR
发送网址,并在服务器上具有代码逻辑进行下载。