volanie downloadu suboru v sablone
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Charlie
- Člen | 11
Čaute,
snažím sa urobiť kód, kde bude možný download súboru, ktorý je uložený v db. Našiel som niekoľko príkladov, ako na to. Urobil som v presenteri funkciu. V nej nastavujem hlavičku HTML a robím echo obsahu súboru. Neviem však, ako ten download zavolať z templatu. Keď to definujem ako link takto:
<a href="{link :downloadfile, $rec['fileID']}" target="_blank">{$rec['fileName']}</a>
tak sa mi to snaží vypísať jeho obsah na obrazovku.
Môžte poradiť, ako na to?
- Charlie
- Člen | 11
public function actionDownloadfile()
{
$data = array('fileID' => $this->getParam('fileID'));
$fileData = DataModule::getFile($data);
$httpResponse = Environment::getHttpResponse();
$httpResponse->setContentType('application/octet-stream');
$httpResponse->setContentType('application/force-download');
$httpResponse->setContentType('application/download');
$httpResponse->setHeader('Pragma', "public");
$httpResponse->setHeader('Expires', 0);
$httpResponse->setHeader('Cache-Control', "must-revalidate, post-check=0, pre-check=0");
$httpResponse->setHeader('Content-Transfer-Encoding', "binary");
$httpResponse->setHeader('Content-Description', "File Transfer");
$httpResponse->setHeader('Content-Length', $fileData[0]['size']);
$httpResponse->setHeader('Content-Disposition', 'attachment; filename="' . $fileData[0]['name'] . '"');
echo $fileData[0]['fileContent'];
}