GuzzleHttp Получить тело ответа при использовании Multipart Stream (большие файлы загрузки) - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь загрузить большие файлы через GuzzleHttp методом MultipartStream, он хорошо работает при загрузке файла с данными формы (токены API).

НО проблема в том, что при использовании MultipartStream не удается получить тело ответа, он возвращает стиль объекта вместо страницы ответа в виде json, например .

Код:

use Psr\Http\Message\ResponseInterface;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Handler\CurlHandler;
use GuzzleHttp\HandlerStack;

class FileHostingAPI
{

public $host            = "https://MyWebsite.com/api/v2/";

public $key1            = ''; // Autorize Key1 from Userpanel
public $key2            = ''; // Autorize Key2 from Userpanel

public $access_token    = ''; // access token got from Authorize method
public $account_id      = ''; // account id got from Authorize method

public function fileUpload($filePath = '')
{
    $resource = fopen($filePath, 'r');
    $stream = \GuzzleHttp\Psr7\stream_for($resource);

    $data['access_token'] = $this->access_token;
    $data['account_id']   = $this->account_id;
    $data['folder_id']   = '';

    $client = new \GuzzleHttp\Client();
    $request = new \GuzzleHttp\Psr7\Request(
        'POST',
        $this->host."file/upload",
        [],
        new \GuzzleHttp\Psr7\MultipartStream(
            [
                [
                    'name'     => 'access_token',
                    'contents' => $this->access_token,
                ],[
                    'name'     => 'account_id',
                    'contents' => $this->account_id,
                ],[
                    'name'     => 'folder_id',
                    'contents' => '',
                ],[
                    'name' => 'upload_file',
                    'contents' => $stream,
                ],
            ]
        )
    );

    $response = $client->send($request);

    print_r($response->getBody());
}
}

Текущий вывод print_r: !!

GuzzleHttp\Psr7\Stream Object
(
    [stream:GuzzleHttp\Psr7\Stream:private] => Resource id #81
    [size:GuzzleHttp\Psr7\Stream:private] =>
    [seekable:GuzzleHttp\Psr7\Stream:private] => 1
    [readable:GuzzleHttp\Psr7\Stream:private] => 1
    [writable:GuzzleHttp\Psr7\Stream:private] => 1
    [uri:GuzzleHttp\Psr7\Stream:private] => php://temp
    [customMetadata:GuzzleHttp\Psr7\Stream:private] => Array
        (
        )

)
...