/** * 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); } }
} } } // 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); }