Source for file jResponseBinary.class.php

Documentation is available at jResponseBinary.class.php

  1. <?php
  2. /**
  3. @package     jelix
  4. @subpackage  core_response
  5. @author      Laurent Jouanneau
  6. @contributor Nicolas Lassalle <nicolas@beroot.org> (ticket #188), Julien Issler
  7. @copyright   2005-2010 Laurent Jouanneau
  8. @copyright   2007 Nicolas Lassalle
  9. @copyright   2009 Julien Issler
  10. @link        http://www.jelix.org
  11. @licence     GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
  12. */
  13.  
  14.  
  15. /**
  16. * Response use to send a binary file to the browser
  17. @package  jelix
  18. @subpackage core_response
  19. */
  20.  
  21. final class jResponseBinary  extends jResponse {
  22.     /**
  23.     * @var string 
  24.     */
  25.     protected $_type = 'binary';
  26.  
  27.     /**
  28.      * The path of the file you want to send. Keep empty if you provide the content
  29.      * @var string 
  30.      */
  31.     public $fileName ='';
  32.     /**
  33.      * name of the file under which the content will be send to the user
  34.      * @var string 
  35.      */
  36.     public $outputFileName ='';
  37.  
  38.     /**
  39.      * the content you want to send. Keep empty if you indicate a filename
  40.      * @var string 
  41.      */
  42.     public $content = null;
  43.  
  44.     /**
  45.      * Says if the "save as" dialog appear or not to the user.
  46.      * if false, specify the mime type in $mimetype
  47.      * @var boolean 
  48.      */
  49.     public $doDownload = true;
  50.  
  51.     /**
  52.     * The mimeType of the current binary file.
  53.     * It will be sent in the header "Content-Type".
  54.     * @var string 
  55.     */
  56.     public $mimeType = 'application/octet-stream';
  57.  
  58.     /**
  59.      * send the content or the file to the browser.
  60.      * @return boolean    true it it's ok
  61.      */
  62.     public function output(){
  63.  
  64.         if($this->doDownload){
  65.             if (!strlen($this->outputFileName)){
  66.                 $f explode ('/'str_replace ('\\''/'$this->fileName));
  67.                 $this->outputFileName = $f[count ($f)-1];
  68.             }
  69.         }
  70.  
  71.         $this->addHttpHeader("Content-Type",$this->mimeType$this->doDownload);
  72.  
  73.         if($this->doDownload)
  74.               $this->_downloadHeader();
  75.  
  76.         if ($this->content === null{
  77.             if (is_readable ($this->fileName&& is_file ($this->fileName)) {
  78.                 $this->_httpHeaders['Content-Length']=filesize ($this->fileName);
  79.                 $this->sendHttpHeaders();
  80.                 session_write_close();
  81.                 readfile ($this->fileName);
  82.                 flush();
  83.             }
  84.             else {
  85.                 throw new jException('jelix~errors.repbin.unknown.file' $this->fileName);
  86.             }
  87.         }else{
  88.             $this->_httpHeaders['Content-Length']=strlen ($this->content);
  89.             $this->sendHttpHeaders();
  90.             session_write_close();
  91.             echo $this->content;
  92.             flush();
  93.         }
  94.         return true;
  95.     }
  96.  
  97.     /**
  98.      * set all headers to force download
  99.      */
  100.     protected function _downloadHeader(){
  101.         $this->addHttpHeader('Content-Disposition','attachment; filename="'.str_replace('"','\"',$this->outputFileName).'"'false);
  102.         $this->addHttpHeader('Content-Description','File Transfert'false);
  103.         $this->addHttpHeader('Content-Transfer-Encoding','binary'false);
  104.         $this->addHttpHeader('Pragma','public'false);
  105.         $this->addHttpHeader('Cache-Control','maxage=3600'false);
  106.         //$this->addHttpHeader('Cache-Control','no-store, no-cache, must-revalidate, post-check=0, pre-check=0', false);
  107.         //$this->addHttpHeader('Expires','0', false);
  108.     }
  109. }

Documentation generated on Wed, 24 Sep 2014 22:01:23 +0200 by phpDocumentor 1.4.3