예제 #1
0
 /**
  * Download file.
  */
 public function showDownload()
 {
     $paths = (array) $_GET['path'];
     $zip = count($paths) > 1;
     $physicals = array();
     foreach ($paths as $path) {
         $physical = self::virtualToPhysical($path);
         $physicals[] = $physical;
         if (is_dir($physical)) {
             $zip = true;
         }
     }
     $name = 'files.zip';
     if (count($physicals) === 1) {
         $name = basename($physicals[0]) . ($zip ? '.zip' : '');
     }
     if ($zip) {
         require_once 'pclzip/pclzip.lib.php';
         $tempfile = tempnam(Curry_Core::$config->curry->tempPath, "curry-download");
         $archive = new PclZip($tempfile);
         if (!$archive->create($physicals, PCLZIP_OPT_REMOVE_PATH, dirname($physicals[0]))) {
             $this->addMessage('Unable to create zip.');
             if (file_exists($tempfile)) {
                 @unlink($tempfile);
             }
         } else {
             Curry_Application::returnFile($tempfile, 'application/octet-stream', $name, false);
             @unlink($tempfile);
             exit;
         }
     } else {
         Curry_Application::returnFile($physicals[0], 'application/octet-stream', $name);
     }
 }
예제 #2
0
 /**
  * Return partial a file to browser and exit. Will set appropriate headers and return the content.
  * 
  * @deprecated Please use Curry_Application::returnPartial() instead.
  *
  * @param string $file
  * @param string $contentType
  * @param string $filename
  */
 public function returnFile($file, $contentType, $filename)
 {
     trace_warning('DEPRECATED: ' . __CLASS__ . '::' . __METHOD__ . '(), please use Curry_Application::' . __METHOD__ . '() instead.');
     Curry_Application::returnFile($file, $contentType, $filename);
 }