FileResponse nebo jiný způsob downloadu a redirect

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
GEpic
Člen | 566
+
0
-

Ahoj,

řeším takový problém. Myslel jsem že to bude jednoduché, ale do chvíle kdy jsem zjistil, že FileResponse terminuje chod programu. Je tedy nějak možné stáhnout soubor a poté redirectovat jinam?

Zkoušel jsem i opačný postup, nejprve redirectovat (s parametrem) a následně dle tohoto parametru stáhnout soubor. Jenže redirect se neprovede a rovnou se stáhne soubor (což jsem nechápal a nechápu).

Je tedy nějaké možné řešení čistě přes PHP? Popřípadě Javascript?

Zkoušel jsem z komponent FileDownloader, ale krom toho že je zastaralý kvůli `@deprecated ` Environment, tak mi také toto nepomohl vyřešit (a i přes callback se chová stejně).

Editoval GEpic (31. 3. 2016 6:32)

ali
Člen | 342
+
0
-

Asi bych to resil meta tagem v hlavicce stranky po presmerovani nejak takto:

$this->redirect("DownloadPage:default", ["stahni" => 1]);
{ifset $presenter->params[stahni]}<meta http-equiv="refresh" content="60 ;url={link stahniSoubor!}">{/ifset}

Samozrejme doporucuji si promennou „stahni“ predat do sablony pres presenter ;-)

Editoval ali (31. 3. 2016 6:49)

GEpic
Člen | 566
+
0
-

ali napsal(a):

Asi bych to resil meta tagem v hlavicce stranky po presmerovani nejak takto:

$this->redirect("DownloadPage:default", ["stahni" => 1]);
{ifset $presenter->params[stahni]}<meta http-equiv="refresh" content="60 ;url={link stahniSoubor!}">{/ifset}

Samozrejme doporucuji si promennou „stahni“ predat do sablony pres presenter ;-)

Tímto způsobem jsem to rozpohyboval. Nejprve redirect na presenter, kde v renderNazev overim zdali se jedna o platny argument a vypisu:

		if ($download !== null && $download > 0)
		{
			$this->flashMessage("Stahování se připravuje, vydržte prosím", "info");
		}
{if $presenter->getParameter("download") !== null}<meta http-equiv="refresh" content="3;url={link download!}">{/if}

V handleDownload potom beru argument presenteru a opet overuji, jestli uz se jedna o platny argument k danemu zaznamu, pote vyvolam download a oala! Dle mého nebyla potřeba tuto hodnotu posílat do template.

Díky moc!

Editoval GEpic (31. 3. 2016 7:28)