如何使用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错误请求。该文件存储在公用磁盘中,因此我正在发送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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...