CakePHP3.6 で画像表示

備忘録として…

CakePHP3で画像をストリームとして吐き出す場合のコード。
この辺、CakePHPがアップデートする度に、結構変わってて、ググっても古い情報が結構ヒットするので…

ファイルを吐き出す場合

use Zend\Diactoros\Stream;

$this->autoRender = false;
$imageinfo = getimagesize( $imagefile );
$stream = new Stream($imagefile, ‘rb’);
$response = $this->response->withType($imageinfo[‘mime’]);
$response->getBody()->write($stream);
return $response;

データベースから読み込んだ場合、

$this->autoRender = false;
$data = $this->Model->get( $id );
$imagestream = stream_get_contents($data->image);
$response = $this->response->withType($data->mime);
$response->getBody()->write($imagestream);
return $response;

カテゴリー: 未分類 パーマリンク