Automatické stažení souboru

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

Donrý den,
potřeboval bych automaticky nabídnout soubor ke stažení [help.pdf] po zadání odkazu : mojestranka.cz/help
Jak toho nejlépe docílit ?

jiri.pudil
Nette Blogger | 1034
+
0
-

Vytvořit si akci, která danou routu obslouží a vrátí FileResponse

pitr82
Člen | 121
+
0
-

Díky,
funguje mi stažení souboru : viz:

<?php
public function actionDefault($filename)
    {
	$this->sendResponse(new Responses\FileResponse($this->context->parameters['wwwDir'].'/files/help.pdf', 'Nápověda.pdf', 'application/octet-stream'));
    }
?>

Jde udělat, aby se soubor místo stažení zobrazil přímo v prohlížeči ?

Oli
Člen | 1215
+
0
-

Na to nepotřebuješ nic sofistikovaného. Podle mě by se mělo zobrazit pokud ho normálně odkážeš třeba v šabloně. takže něco jako

<a n:href="{$basePath}/files/help.pdf">Pomoc</a>

by mělo ten soubor rovnou zobrazit v prohlížeči.

pitr82
Člen | 121
+
0
-

Oli napsal(a):

Na to nepotřebuješ nic sofistikovaného. Podle mě by se mělo zobrazit pokud ho normálně odkážeš třeba v šabloně. takže něco jako

<a n:href="{$basePath}/files/help.pdf">Pomoc</a>

by mělo ten soubor rovnou zobrazit v prohlížeči.

To jsem netestoval…
Ale já nechci zobrazovat žádnou šablonu, jen po zadání odkazu: mojeaplikace.cz/help místo stáhnutí, zobrazil pdf soubor.
Díval jsem se do metody FileRespose a asi budu muset nastavit jinak hlavičky [Headers]

Oli
Člen | 1215
+
0
-

No však nemusíš. Ono to odkáže na ten soubor, takže pak budeš mít v URL example.cz/files/help.pdf. Žádnou šablonu nemusíš nastavovat. Ten odkaz dáš do nějakýho Homepage:default, nebo odkudkoli to chceš volat…

jiri.pudil
Nette Blogger | 1034
+
0
-

V hlavičce Content-Disposition musíš místo attachment poslat inline. Asi by nebylo špatné, kdyby to ve FileResponse bylo konfigurovatelné. Když už v tom budeš, můžeš poslat PR?

pitr82
Člen | 121
+
0
-

jiri.pudil napsal(a):

V hlavičce Content-Disposition musíš místo attachment poslat inline. Asi by nebylo špatné, kdyby to ve FileResponse bylo konfigurovatelné. Když už v tom budeš, můžeš poslat PR?

jj, to je přesně ono, kdyby to bylo jako property bylo by to super.

Edit:
Kdybych chtěl větší soubory nechat stahovat omezenou rychlostí, kde by na to bylo nejvhodnější místo?
Rozšířit resp. upravit metodu send třídy FileResonse ? 

Nemáte to někdo už vyřešeno ?

Editoval pitr82 (27. 5. 2014 14:02)

jiri.pudil
Nette Blogger | 1034
+
0
-

Kdybych chtěl větší soubory nechat stahovat omezenou rychlostí, kde by na to bylo nejvhodnější místo?

Úplně nejvhodnější místo by imo bylo v konfiguraci webserveru.

pitr82
Člen | 121
+
0
-

jiri.pudil napsal(a):

Kdybych chtěl větší soubory nechat stahovat omezenou rychlostí, kde by na to bylo nejvhodnější místo?

Úplně nejvhodnější místo by imo bylo v konfiguraci webserveru.

Díky, to je jedná z možností, kdybych to dělal pro všechny stejně.
A kdybych to chtěl mít řízené aplikací ? Různým uživatelům různé rychlosti ?

libik
Člen | 100
+
0
-

Taky bych ocenil, kdyby obsah hlavicky Content-Disposition byl konfigurovatelny. Na PDF se odkazuju pres url /document/ID a presenter mi vraci prislusny soubor, ktery chci ale zobrazit a nestahovat rovnou.

David Matějka
Moderator | 6445
+
0
-

@libik od 2.2.2 je