File Downloader
Je třída na jednodušší stahování souborů. Podporuje navazování přerušeného stahování, segmentové stahování, automatické zjištění mimetypu souboru, češtinu a mezery v názvech souborů a obsahuje omezovač rychlosti stahování.
| Verze | 1.0.0, 1.1.0-rc |
| Download | viz níže |
| Autor | Jan Kuchař |
| Licence | New BSD License |
| Stánka doplňku | http://filedownloader.projekty.mujserver.net |
| Diskuse k doplňku | http://forum.nette.org/…e-downloader |
| Demo | http://filedownloader.projekty.mujserver.net/demo/ |
| Testováno na Nette | 0.9.x |
Základní použití
Chceme stáhnout soubor.
$filedownload = new FileDownload;
$filedownload->sourceFile = "source.txt";
$filedownload->download();
Fluent interface
Zde je to samé, za použití fluent interface
FileDownload::getInstance()->setSourceFile("source.txt")->download();
Pokročilé použití
Omezovač rychlosti
$filedownload = new FileDownload;
$filedownload->sourceFile = "source.txt";
$filedownload->speedLimit = 5*FDTools::BYTE; // Nastavíme rychlost odesílání v bytech
$filedownload->download();
Fluent interface
FileDownload::getInstance()
->setSourceFile("source.txt")
->setSpeedLimit(5*FDTools::BYTE) // Nastavíme rychlost odesílání v bytech
->download();
Název odesílnaného souboru
V tomoto příkladu se soubor odešle jako test.txt
$filedownload = new FileDownload;
$filedownload->sourceFile = "source.txt";
$filedownload->transferFileName = "test.txt";
$filedownload->download();
Fluent interface
FileDownload::getInstance()
->setSourceFile("source.txt")
->setTransferFileName("test.txt")
->download();
Ruční určení mime-typu
Soubor se odešle s mime typem pdf souboru
$filedownload = new FileDownload;
$filedownload->sourceFile = "source.txt";
$filedownload->mimeType = "application/pdf";
$filedownload->download();
Fluent interface
FileDownload::getInstance()
->setSourceFile("source.txt")
->setMimeType("application/pdf")
->download();
Zobrazení souboru přímo v prohlížeči
Přidáno ve verzi 1.0.0
$filedownload = new FileDownload;
$filedownload->sourceFile = "source.txt";
$filedownload->contentDisposition = FileDownload::CONTENT_DISPOSITION_INLINE;
$filedownload->download();
Fluent interface
FileDownload::getInstance()
->setSourceFile("source.txt")
->setContentDisposition(FileDownload::CONTENT_DISPOSITION_INLINE)
->download();
Callbacky – když …
FileDownloader podporuje callbacky. Tzn. například: když chci něco provést když se přeruší spojení, tak použiji callback abort. Registrace proběhne buť:
$filedownload = new FileDownload;
$filedownload->sourceFile = "source.txt";
$filedownload->onAbort[] = "onAbort"; // Registrace callbacku
$filedownload->download();
nebo
FileDownload::getInstance()
->setSourceFile("source.txt")
->addAbortCallback("onAbort") // Registrace callbacku
->download();
Tzn. callbacky registrujeme buť onCallback[] = callback; nebo
addCallbackCallback(callback); v fluent interface.
Přehled callbacků
| Název callbacku | Popis callbacku |
|---|---|
| BeforeDownloaderStarts | Než se spustí downloader |
| BeforeOutputStarts | Tesně před začátkem uploadu souboru (poslední možnost odeslat hlavičky) |
| StatusChange | Když se změní stav souboru – když se odešle blok souboru nebo každou sekundu když je stahování souboru bez omezení rychlosti |
| Complete | Když je stahování souboru úspěšně dokončeno |
| Abort | Když je stahování souboru přerušeno (typicky: uživatel klikne na storno) |
| ConnectionLost | Když se přeruší spojení (z jakéhokoli důvodu) |
| TransferContinue | Když se naváže přerušené stahování (začne se stahovat část souboru) |
| NewTransferStart | Když začne nové stahování od začátku souboru |
Parametry callbacku jsou následovné:
function onAbort(FileDownload $download,IDownloader $downloader){
/* ... */
}
Kdy je který callback volán hezky ukazuje příklad
form z repozitáře. (obsahuje přehled volaných callbacků)
Krátká video ukázka
Živé demo
http://filedownloader.projekty.mujserver.net/demo/Získat File Downloader
https://svn.mujserver.net:8443/…loader/trunk
(verze pro PHP 5.2.x) (uživatel: guest, heslo: (nechat
prázdné))
Komentáře 
Honza Kuchař | 25. 1. 2010, 18:21 | comment
- Podpora pro IPresenterResponse přesunuta do samostatné třídy AppFileDownload
- Nový příklad: MVC – Používáme FileDownloader v Nette/Application




Honza Kuchař | 25. 1. 2010, 15:36 | comment