Goutteをインストールします。
$ composer require fabpot/goutte:2.*以下、ファイルをダウンロードするサンプルです。
<?php
require_once './vendor/autoload.php';
// Goutte\Client のインスタンスを生成する
$client = new Goutte\Client;
// ダウンロードしたいファイルがあるURLにアクセスする
$client->request('GET', 'http://example.com/download.php');
// レスポンスのオブジェクトを取得する
/** @var Symfony\Component\BrowserKit\Response $response */
$response = $client->getResponse();
// コンテンツのオブジェクトを取得する
/** @var GuzzleHttp\Stream\Stream $content */
$content = $response->getContent();
// seek(0) して getContents() するとファイル内容を取得できる
$content->seek(0);
echo $content->getContents();
これで、ダウンロードしたファイルの内容を取得出来ました。ポイントは seek(0) です。これをしないと、どうにも取得できませんでした。尚、ダウンロードさせる側に、以下のPHPファイルを置いて確認しました。
<?php
// download.txt は別途用意する
$file = 'download.txt';
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$file);
header('Content-Length: ' . filesize($file));
readfile($file);
No comments:
Post a Comment