PHP Nette - jak stahovat soubory nad adresářem www (z rootu)
Dobrý den,
potřeboval bych na mém webu, který je napsán v PHP Nette, použít funkci, která by umožnila stahovat soubory mimo obvyklou cestu web/www/uploads z web/uploads, tzn. z adresáře na stejné úrovni jako je app, vendor, www... Jak by se to dalo řešit? Cílem je, aby cesta k souborům nebyla pro návštěvníka vidět a nedalo se stahovat "tipováním" cesty k souborům. Díky
Dobrý den,
ano, já stahování nad adresářem www v Nette řeším takto:
potřeboval bych na mém webu, který je napsán v PHP Nette, použít funkci, která by umožnila stahovat soubory mimo obvyklou cestu web/www/uploads z web/uploads, tzn. z adresáře na stejné úrovni jako je app, vendor, www... Jak by se to dalo řešit? Cílem je, aby cesta k souborům nebyla pro návštěvníka vidět a nedalo se stahovat "tipováním" cesty k souborům. Díky
ODPOVĚĎ
Dobrý den,
ano, já stahování nad adresářem www v Nette řeším takto:
Show english version
public function getFile($up_id)
{
$document_root = $_SERVER['DOCUMENT_ROOT'];
//odebere www na konci v ceste $document_root
$path = substr($document_root, 0, -3);
$file = $this->getUpload($up_id);
$file = $path . $file->up_path;
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
}
return $file;
}