備忘録として…
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;