Download souboru, kam soubory pro stažení ukládat?

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

Ahoj, dělám jeden malý web v nette (něco jako blog,ale nebude to blog)…

A mám dotaz – některé články budou mít jako přílohu soubory (nejčastější případ bude „tento článek si můžete stáhnout také ve formátu pdf a doc…“)

Tedy budu mít DB tabulku s přílohama kde budu mít uložen id článku, cestu k souboru název souboru a další (zda je veřejný apod…)

Pak bych chtěl soubory stahovat pomocí návodu uvedeného zde (doufám, že je to ještě platné):"":http://www.webfaq.cz/…zeni-v-Nette

ALE nevím, kam bych měl správně ukládat soubory? Zda do složky www/neco, nebo někam jinam… díky

n.u.r.v.
Člen | 485
+
0
-

hups, tak jsem se posunul dál – už vím, že článek v uvedeném odkazu je zastaralý – došlo k přejmenování z DownloadResponse na FileResponse, ale mám další problém:

když dám v rendermetodě:

$this->terminate(new Responses\FileResponse(www_DIR.'attachments/10/pozadovany_soubor.doc', 'jmenosouboru.doc'));

Tak mě vyskočí laděnka: Nette\Application\UI\Presenter::terminate is not intended to send a Application\Response; use sendResponse() instead

Co s tím?Díky

n.u.r.v.
Člen | 485
+
0
-

EDIT – už jsem to vygooglil:

public function renderDownload($fileId, $hash){
     $response = new Responses\FileResponse(www_DIR.'attachments/10/vanocni_zamysleni09.doc', 'jmenosouboru.doc');
     $this->sendResponse($response);
    $this->terminate();
 }

Funguje!

Mysteria
Člen | 797
+
0
-

Proč to dáváš do $this->terminate()? Stažení souboru uděláš takhle:

(new \Nette\Application\Responses\FileResponse('images/background.jpg'))->send($this->httpRequest, $this->httpResponse);

EDIT: Nebo tak, jak sis sám našel výše. ;)

Editoval Mysteria (1. 5. 2014 16:11)

David Matějka
Moderator | 6445
+
0
-

@Mysteria: tohle rozhodne neni spravny zpusob, jak poslat response
@n.u.r.v.: po sendResponse neni nutne volat terminate