php - 如何使用 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 协议。
您不能在请求中发送资源链接并期望服务器在恢复请求处理之前下载它。
您可以从 url 下载文件并将其内容包含在您的请求中,
或者
发送 url 并在服务器上有代码逻辑来下载它。
推荐阅读
- ansible - Ansible 同步模块用户标识问题
- powerbi - Power BI DAX,如何创建度量以计算 00:00 格式的时间总和
- json - 如何在 Flutter 中使用 JsonConverter 进行列表
- windows - IntelliJ 无法打开(即使重新安装后)
- javascript - 2D 可见性算法不适用于重叠情况
- pytorch - PyTorch 文档期间的 Makefile 错误
- java - JavaFX TabPane 删除选项卡和内容之间的边框
- python - 如何垂直显示层次聚类方法?
- javascript - 在国际象棋中寻找路径?二维数组搜索
- kotlin - Kafka 流 - 从输入主题中获取 4 个值,传递给函数,然后根据键发送到输出主题聚合