/** * A simple method to quickly send attachment stream download. * * @param string|resource $source The file source, can be file path or resource. * @param ResponseInterface $response A custom Response object to contain your headers. * @param array $options Options to provide some settings, currently supports * "delay" and "filename". * * @return void */ public static function sendAttachment($source, ResponseInterface $response = null, $options = array()) { $stream = new Stream($source, 'r'); /** @var MessageInterface|ResponseInterface $response */ $response = $response ?: new Response(); $filename = null; if (is_string($source)) { $filename = pathinfo($source, PATHINFO_BASENAME); } if (isset($options['filename'])) { $filename = $options['filename']; } $response = HeaderHelper::prepareAttachmentHeaders($response, $filename); $response = $response->withBody($stream); $output = static::$outputObject; if (!$output instanceof StreamOutput) { $output = new StreamOutput(); } if (isset($options['delay'])) { $output->setDelay($options['delay']); } $output->respond($response); }
/** * sendBody * * @param ResponseInterface $response * * @return void */ public function sendBody(ResponseInterface $response) { ob_start(); parent::sendBody($response); $this->output = ob_get_clean(); }