/**
  * Sends a standard headers for file download
  * @param BaseFileDownload $file            File
  * @param BaseDownloader $downloader    Downloader of the file
  */
 protected function sendStandardFileHeaders(BaseFileDownload $file, BaseDownloader $downloader = null)
 {
     $res = Environment::getHttpResponse();
     $req = Environment::getHttpRequest();
     //FDTools::clearHeaders($res); // Voláno už v FileDownload.php
     $res->setContentType($file->mimeType, "UTF-8");
     $res->setHeader("X-File-Downloader", "File Downloader (http://filedownloader.projekty.mujserver.net)");
     if ($downloader !== null) {
         $res->setHeader("X-FileDownloader-Actual-Script", $downloader->getReflection()->name);
     }
     $res->setHeader('Pragma', 'public');
     // Fix for IE - Content-Disposition
     $res->setHeader('Content-Disposition', $file->getContentDisposition() . '; filename="' . FDTools::getContentDispositionHeaderData($file->transferFileName) . '"');
     $res->setHeader('Content-Description', 'File Transfer');
     $res->setHeader('Content-Transfer-Encoding', 'binary');
     $res->setHeader('Connection', 'close');
     $res->setHeader('ETag', FDTools::getETag($file->sourceFile));
     $res->setHeader('Content-Length', FDTools::filesize($file->sourceFile));
     // Cache control
     if ($file->enableBrowserCache) {
         $this->setupCacheHeaders($file);
     } else {
         $this->setupNonCacheHeaders($file);
     }
 }
Example #2
0
                }
            }
        }
        // Pokud se soubor nějakým způsobem odešle - toto už se nespustí
        if ($lastException instanceof Exception) {
            FDTools::clearHeaders(Environment::getHttpResponse(), TRUE);
            throw $lastException;
        }
        if ($req->getHeader("Range")) {
            FDTools::_HTTPError(416);
        } else {
            $res->setCode(500);
        }
        throw new InvalidStateException("There is no compatible downloader (all downloader returns downloader->isComplatible()=false or was skipped)!");
    }
}
/* Register default downloaders */
BaseFileDownload::registerFileDownloader(new NativePHPDownloader());
BaseFileDownload::registerFileDownloader(new AdvancedDownloader());
/**
 * When some http error
 */
class FileDownloaderException extends Exception
{
}
/**
 * When downloader throws this exception -> it will be skipped
 */
class FDSkypeMeException extends Exception
{
}
 /**
  * Implementation of IPresenterResponse::send()
  */
 function send(IRequest $httpRequest, IResponse $httpResponse)
 {
     parent::download($this->downloader);
 }