скачать PDF с жадностью - PullRequest
0 голосов
/ 03 мая 2019

Я хочу скачать PDF-файл с жадностью. Возможно ли это?

Я попробовал этот код:

$response  = $this->client->post(self::API_BASE_URL.self::API_LABEL_URL,
                    [
                            'future' => true,
                            'json' => [$this->json],
                            'headers' => ['Content-Type' => 'application/json', 'Accept' => 'application/pdf'],
                            'query' => [
                                        'return-type' => 'pdf',
                                        'x-api-key'   => $this->apiKey
                            ],
                     ]);

и я получаю

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

Но я понятия не имею, как мне справиться с этим идентификатором ресурса, чтобы сохранить файл PDF. Я использую guzzle 5.3 и PHP 5.4 без параметров для обновления версии php.

1 Ответ

0 голосов
/ 01 июня 2019

Вы можете использовать опцию Guzzle sink для загрузки файла - http://docs.guzzlephp.org/en/stable/request-options.html#sink

$pdfFilePath = __DIR__ . '/resource/file.pdf'; // specify your path
$pdfFileResource = fopen($pdfFilePath, 'w+');

$this->client->post(
    self::API_BASE_URL . self::API_LABEL_URL,
    [
        'future' => true,
        'json' => [$this->json],
        'headers' => [
            'Content-Type' => 'application/json', 
            'Accept' => 'application/pdf'
        ],
        'query' => [
            'return-type' => 'pdf',
            'x-api-key'   => $this->apiKey
        ],
        'sink' => $pdfFileResource
    ]
);

Больше примеров - https://github.com/andriichuk/php-curl-cookbook#download-file

...