【问题标题】:How to post request file image data binary by PHP GuzzleHttp\Client如何通过 PHP GuzzleHttp\Client 发布请求文件图像数据二进制
【发布时间】:2020-10-29 08:43:40
【问题描述】:

我正在使用 api SAFR,我想从我的 AWS S3 导入面部图像 url

在文档命令 curl 中

curl -v -X POST -H "Content-Type:application/octet-stream" -H "X-RPC-DIRECTORY: main" -H "X-RPC-AUTHORIZATION: userid:pwd" -H "XRPC-PERSON-NAME:First Last" -H "X-RPC-EXTERNAL-ID: 0000001" "https://covi.real.com/people?update=false" --data-binary @IMG_0000001.jpg

我正在尝试将其转换为 GuzzleHttp\Client 的发布请求 我的代码:

        $headers = [
            'Content-Type' => 'application/octet-stream',
            'X-RPC-DIRECTORY' => 'main',
            'X-RPC-AUTHORIZATION' => $this->userid.':'.$this->pwd,
            'XRPC-PERSON-NAME' => $this->person_name,
            'X-RPC-EXTERNAL-ID' => $this->external_id,
        ];

        $client = new Client(['headers' => $headers]);

        $multipart = [
            [
                'name'     => '0000001.jpg',
                'contents' => base64_encode(file_get_contents($this->image_url)),
            ]
        ];

        try {
            $request = $client->post($this->endpoint, [
                'query' => ['update' => 'false'],
                'multipart' => $multipart,
            ]);
            $response = $request->getBody();
            return $response;
        } catch (Exception $e) {
            return $e;
        }

但是不正确,并且返回错误:

400 Bad Request` response:↵{"message":"Content type 'multipart/form-data;boundary=6506e88515760a7c6901a4f3a42ewe2220ed1a2e6a33ae' not supported"

我试过cURL PHP还是没有成功,不知道哪里错了,希望大家帮忙,谢谢!

【问题讨论】:

    标签: php curl binary guzzle


    【解决方案1】:

    傻了,我发了这个问题后在stackoverflow中找到了答案

    $headers = [
            'X-RPC-DIRECTORY' => 'main',
            'X-RPC-AUTHORIZATION' => $this->userid.':'.$this->pwd,
            'XRPC-PERSON-NAME' => $this->person_name,
            'X-RPC-EXTERNAL-ID' => $this->external_id,
        ];
    
        $client = new Client(['headers' => $headers]);
    
        try {
            $request = $client->post($this->endpoint, [
                'query' => ['update' => 'false'],
                'body' => file_get_contents($this->image_url),
            ]);
            $response = $request->getBody();
            return $response;
        } catch (Exception $e) {
            return $e;
        }
    

    【讨论】:

      猜你喜欢
      • 2019-11-24
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      • 2015-05-08
      相关资源
      最近更新 更多