| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- namespace KarmaFW\App;
- class ResponseFile extends Response
- {
- protected $file_path;
- public function __construct($file_path)
- {
- parent::__construct('', null);
- $this->file_path = $file_path;
- }
- public function sendHeaders()
- {
- if ($this->headers_sent) {
- // Warning: headers already sent
- //error_log("Warning: headers already sent");
- //return;
- }
- if (! is_file($this->file_path)) {
- // File not found
- $this->headers['Content-Length'] = 0;
- } else {
- $content_type = mime_content_type($this->file_path);
- if (empty($content_type)) {
- $content_type = "application/octet-stream";
- }
- $this->headers['Content-Length'] = filesize($this->file_path);
- $this->headers['Content-Type'] = $content_type;
- $this->headers['Content-Transfer-Encoding'] = "Binary";
- $this->headers['Content-disposition'] = 'attachment; filename="' . basename($this->file_path) . '"';
- }
- parent::sendHeaders();
- }
- public function send()
- {
- if (! is_file($this->file_path)) {
- // ERROR 404
- $this->setStatus(404);
- }
- if ($this->headers_sent) {
- // Warning: redirect may not work
- }
- $this->sendHeaders();
- if (is_file($this->file_path)) {
- readfile($this->file_path);
- } else {
- echo "File not found";
- }
- }
- }
|