MultiFileUpload addon nic se nedeje
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Deepress
- Člen | 2
Ahoj,
chtel bych se zeptat kde bych mel hledat chybu v pripade, ze kdyz spustim nahravani tak se nic nedeje, v logu se nic neobjevi a upload je stale na nula procentech, stahl jsem si cely projekt, pripojil k sobe na DB pres dibi a v databazi vytvoril tabulku files. Teprve v nette zacinam tak me prosim hned nezastrelte za mozna stupidni dotaz :(
- Filip Procházka
- Moderator | 4668
Pravděpodobně jsi na něco zapomněl. Ale to ti bez tvého kódu nejspíš nikdo nepotvrdí.
- Deepress
- Člen | 2
Prikladam kod z HomepagePresenteru, ale myslim si ze tady chyba nebude. Proto jsem se poprve ptal, kde bych mel hledat chybu :(
class HomepagePresenter extends BasePresenter {
public function createComponentForm($name) {
$form = new Form();
$form->getElementPrototype()->class("ajax");
// Uploadů můžete do formuláře samozdřejmě přidat více, ale zatím je docela nepříjemná validace a jedna chybka v JS
$form->addMultipleFileUpload("upload","První balíček souborů")
->addRule("MultipleFileUpload::validateFilled","Musíte odeslat alespoň jeden soubor!")
->addRule("MultipleFileUpload::validateFileSize","Soubory jsou dohromady moc veliké!",100*1024);
$form->addSubmit("odeslat", "Odeslat");
$form->onSuccess[] = array($this,"onSubmit");
// Invalidace snippetů
$form->onInvalidSubmit[] = array($this,"handlePrekresliForm");
$form->onSubmit[] = array($this,"handlePrekresliForm");
return $form;
}
public function onSubmit($form) {
$data = $form->getValues();
// Předáme data do šablony
$this->template->values = $data;
$queueId = uniqid();
// Přesumene uploadované soubory
foreach($data["upload"] AS $file) {
// $file je instance HttpUploadedFile
$newFilePath = $this->context->params['appDir']."/uploadedData/q{".$queueId."}__f{".rand(10,99)."}__".$file->getName();
// V produkčním módu nepřesunujeme soubory...
if(!Environment::isProduction()) {
if($file->move($newFilePath))
$this->flashMessage("Soubor ".$file->getName() . " byl úspěšně přesunut!");
else
$this->flashMessage("Při přesouvání souboru ".$file->getName() . " nastala chyba! Pro více informací se podívejte do logů.");
}
}
}
public function handlePrekresliForm() {
$this->invalidateControl("form");
}
}