EN | CS | Přihlásit | Registrovat

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
BeforeDownloa­derStarts 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

Stáhnout video

Ž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 Comments feed

Honza Kuchař | 25. 1. 2010, 15:36 | comment
  • Přidána podpora PHP 5.3
  • Přidána podpora pro IPresenterResponse
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

Login to submit a comment