link na stahovanie dokumentov
- Felix
- Nette Core | 1247
Muzes pouzit FileResponse
public function actionDownload($id) {
// jaky, ktery, ci soubor
$this->sendResponse(new FileResponse($filename));
}
- Takeshi
- Člen | 596
Felix napsal(a):
Muzes pouzit FileResponse
public function actionDownload($id) { // jaky, ktery, ci soubor $this->sendResponse(new FileResponse($filename)); }
Ak nežiadam veľa, mohol by si mi dať priklad? .. teda ako to čo si mi napísal mám aj použiť .. ako vykresliť … diky
- Oli
- Člen | 1215
No nevím co na tom chceš za příklad. Prostě si někde v šabloně
odkážeš řekněme na presenter Files
, který má
akci download
<a n:href="Files:download $id">stáhni soubor</a>
No a potom zavoláš to co ti psal už @Felix přičemž to $filename je celá cesta k souboru. Nic víc není potřeba. Tohle ti prostě pushne ten soubor do prohlížeče, jakože vynutí stáhnutí.
- Takeshi
- Člen | 596
No viem, ze je to pre niektorych lahke … ale ja si s tym neviem dat rady … proste mi to nefunguje … mam v Presenteru toto …
public function actionDownload($id) {
// jaky, ktery, ci soubor
$filename = 'subor.pdf';
$this->sendResponse(new FileResponse($filename));
}
A v sablone …
<a n:href="Files:download 1">stáhni soubor</a>
namiesto $id som dal cislo 1, inak to vypisovalo, ze neznama premenna $id … …inak mi ako chybu vypisuje …
#error: Cannot load presenter 'Files', class 'App\Presenters\FilesPresenter' was not found in 'C:\Program Files (x86)\EasyPHP-12.1\www\test\app/presenters/FilesPresenter.php'.
ukazuje mi to tam, kde sa vklada url adresa
- Šaman
- Člen | 2666
??? Od někoho s 350 příspěvky bych takový dotaz nečekal. Tohle jsou naprosté základy ohledně tvoření odkazů, nastuduj si dokumentaci.
- id, pokud nepotřebuješ, vůbec v té action nemusí být
- asi špatný namespace, nebo jméno presenteru, nebo nevím co – tohle s downloadem vůbec nesouvisí
- soubor raději zadávej realtivně k nějakému známému místu –
třeba presenteru
__DIR__ . '/subor.pdf'
- Takeshi
- Člen | 596
Šaman napsal(a):
Mám síce cca. 350 príspevkov, ale s týmto som ešte nerobil.
btw … skúsil som všetko, čo ma napadlo, že by mohlo pomôcť, ale nič, stále nevie nájsť cestu k FileResponse. Môj posledný pokus vyzeral takto …
public function actionDownload() {
$filename = 'subor.pdf';
$this->sendResponse(new Nette\Application\Responses\FileResponse($filename));
}
… ale nič sa neudialo. Mám vyriešené sťahovanie cez čisté PHP, ale chcel by som to urobiť v nette.
- Michal Vyšinský
- Člen | 608
@Takeshi a máš na začátku souboru use Nette
?
Editoval Michal Vyšinský (11. 7. 2014 10:39)
- Takeshi
- Člen | 596
Michal Vyšinský napsal(a):
@Takeshi a máš na začátku souboru
use Nette
?
… radšej sem dám celý presenter … niečo je tam možno navyše
<?php
namespace App\Presenters;
use Nette,
App\Model;
use Nette\Application\Responses;
class HomepagePresenter extends BasePresenter
{
public function renderDefault()
{
}
public function actionDownload() {
// jaky, ktery, ci soubor
$filename = 'subor.pdf';
$this->sendResponse(new Nette\Application\Responses\FileResponse($filename));
}
}
- Michal Vyšinský
- Člen | 608
A jakou chybu ti to vyhazuje? Nemůže to najít třídu FileResponse nebo soubor ‚subor.pdf‘?
Editoval Michal Vyšinský (11. 7. 2014 10:47)
- Michal Vyšinský
- Člen | 608
Jakou máš verzi Nette? Když hledáš tu třídu ručně v IDE nebo filesystemu tak tam je?
- Michal Vyšinský
- Člen | 608
Hm. Divné…
Chybu to nezpůsobuje, ale díky tomu
use Nette\Application\Responses
můžeš použít jen
Responses\FileResponse
.
Ještě mě napadá: máš to instalované přes composer? Jestli ano, zkus
spustit composer dump-autoload
a také smazat cache…
- Michal Vyšinský
- Člen | 608
No když nevíš, jak se instaluje přes composer tak ho nepoužíváš :) Nemůžeš celý projekt hodit někam na github/bitbucket?
- David Kudera
- Člen | 455
Takže tuhle:
#error: Cannot load presenter 'Files', class 'App\Presenters\FilesPresenter' was not found in 'C:\Program Files (x86)\EasyPHP-12.1\www\test\app/presenters/FilesPresenter.php'.
chybu už ti to nedělá jo?
Editoval David Kudera (11. 7. 2014 11:10)
- Takeshi
- Člen | 596
David Kudera napsal(a):
Takže tuhle:
#error: Cannot load presenter 'Files', class 'App\Presenters\FilesPresenter' was not found in 'C:\Program Files (x86)\EasyPHP-12.1\www\test\app/presenters/FilesPresenter.php'.
chybu už ti to nedělá jo?
Práveže robí … v tom je problém, že nevie nájsť FileResponse … ako to vypisuje aj tam …
- Takeshi
- Člen | 596
Michal Vyšinský napsal(a):
No když nevíš, jak se instaluje přes composer tak ho nepoužíváš :) Nemůžeš celý projekt hodit někam na github/bitbucket?
Stiahnuť si môžeš celý project cez link http://ulozto.cz/…iahnutie-rar ale je tam len to co som tu napísal … teda ta funkcia a ten odkaz, tak neviem, či ti to pomôže
… a zmenil som tam len nazov stiahnutie pdf na txt …
Editoval Takeshi (11. 7. 2014 11:50)
- Michal Vyšinský
- Člen | 608
Ach…
- composer používáš a ne že ne
- Chyba není v tom, že to nenajde FileResponse ale FilesPresenter!
- Když máš akci download v HomepagePresenteru, tak logicky nemůžeš
odkaz mít jako
Files:download
. Neopisuj zdejší rady doslova. Jen se jimi řiď! Takže odkaz dej Homepage:download místo Files:download - Ten soubor text.txt který chceš stáhnout nedávej do templates/Homepage ale jak už tu někdo psal, tak do nějaké určité složky a FileRepsonse správně nasměruj do té složky
- Příště když napíšu github/bitbucket tak nemyslím uložto – příště se na stahování zipu vykašlu…
Editoval Michal Vyšinský (11. 7. 2014 12:02)
- Takeshi
- Člen | 596
Michal Vyšinský napsal(a):
Ach…
- composer používáš a ne že ne
- Chyba není v tom, že to nenajde FileResponse ale FilesPresenter!
- Když máš akci download v HomepagePresenteru, tak logicky nemůžeš odkaz mít jako
Files:download
. Neopisuj zdejší rady doslova. Jen se jimi řiď! Takže odkaz dej Homepage:download místo Files:download- Ten soubor text.txt který chceš stáhnout nedávej do templates/Homepage ale jak už tu někdo psal, tak do nějaké určité složky a FileRepsonse správně nasměruj do té složky
- Příště když napíšu github/bitbucket tak nemyslím uložto – příště se na stahování zipu vykašlu…
Ďakujem za radu ! … s githubom nerobim, preto som to dal na ulozto … nemusel si to stahovat, ked ti to tak vadi …
- Šaman
- Člen | 2666
@Takeshi: Ono to vadí více lidem, já bych to třeba nestahoval. Na githubu/bitbucketu se dostanu jediným klikem na zdrojáky i se zvýrazněnou syntaxí a najde se daleho víc lidí ochotných se na to podívat a hledat chybu.
A že jsi s tímhle zatím nedělal? Celou dobu tu ladíme jen odkaz na action, tedy nic co by souviselo se stahováním souboru.