12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- /**
- *
- * Cube Framework $Id$ bF6RH8EP0LAOZVfnlUv5tEoyYYq2MVtovWbFWj2gqWk=
- *
- * @link http://codecu.be/framework
- * @copyright Copyright (c) 2014 CodeCube SRL
- * @license http://codecu.be/framework/license Commercial License
- *
- * @version 1.0
- */
- /**
- * download file class
- */
- namespace Cube\Http;
- use Cube\Controller\Response\AbstractResponse;
- class Download extends AbstractResponse
- {
- /**
- *
- * real path to the file or false if the file does not exist
- *
- * @var string|false
- */
- protected $_filePath = false;
- /**
- *
- * class constructor
- *
- * @param string|null $file
- */
- public function __construct($file = null)
- {
- if ($file !== null) {
- $this->setFilePath($file);
- }
- }
- /**
- *
- * set real path to the file to be downloaded
- *
- * @param string $filePath
- * @return $this
- */
- public function setFilePath($filePath)
- {
- $this->_filePath = realpath($filePath);
- return $this;
- }
- /**
- *
- * get real file path
- *
- * @return string
- */
- public function getFilePath()
- {
- return $this->_filePath;
- }
- /**
- *
- * if the file exists, create a download request and stop all other executions
- *
- * @return null|mixed
- */
- public function send()
- {
- if (($filePath = $this->getFilePath()) !== false) {
- $this->setHeader('Content-Type: application/octet-stream')
- ->addHeader('Content-Disposition: attachment; filename="' . basename($filePath) . '"')
- ->addHeader('Content-Length: ' . filesize($filePath));
- $this->setBody(
- readfile($filePath));
- parent::send();
- exit(0);
- }
- return null;
- }
- }
|