Problem s uploadem souboru

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

Zdravím,
Mam problem s uploadem souboru. Mam formular v modalnim okne pres jquery dialog().
Vse funguje s beznymi daty z addText, ale ne z addUpload. Co delam spatne prosim ? :

protected function createComponentUploadForm($name) {

	$form = new Nette\Application\UI\Form($this, $name);

	$form->addUpload('file', 'Soubor:');
	$form->addText('test', 'Test');

	$form->addSubmit('register', 'Nahrát')
		->onClick[] = callback($this, 'uploadFormSubmitted');

	return $form;
    }

    public function uploadFormSubmitted(SubmitButton $btn) {

	$data = $btn->form->values;

	$this->flashMessage('Zpracovávám');

	if ($this->presenter->isAjax()) {
	    $this->invalidateControl('uploadForm');
	    $this->invalidateControl('flashMsg');
	} else {
	    $this->redirect('this');
	}
    }

Toto je pak v $btn->form->values :

Nette\ArrayHash object {
  CLASSNAME => (string) Nette\ArrayHash
  file => Nette\Http\FileUpload object {
    CLASSNAME => (string) Nette\Http\FileUpload
    name => null
    type => null
    size => null
    tmpName => null
    error => (int) 4
  }
  test => (string) gggggg
}
iguana007
Člen | 970
+
0
-

viz. error 4: http://php.net/…d.errors.php
Soubor se ti na server nenahrál … teď musíš zjistit proč?
Máš povolený zápis tam, kde se ti soubory nahrávají?

MW
Člen | 615
+
0
-

pokud do toho nemotam ajax a modalni okno, tak me php upload vali v poradku.
Jediny rozdil je pak jeste v tom, ze volam onSuccess misto onClick …

Nevadi tomu, ze je ten form injektovany do toho dialogu? :

Na modalni okno jsem pouzil tento kod z fora :

<script>
// aktivace odkazu na zobrazeni dialogu
jQuery(function($) {
        $('a.ajaxdialog').live('click', function(event) {
                event.preventDefault();
                $.post($.nette.href = this.href, function(data) {
                        // (mimo jine) injektovani formulare do HTML
                        $.nette.success(data);
                        // aktivace ajaxoveho submitu formulare
                        activateAjaxForm();
                        // zobrazeni formulare v dialogu
                        $("#snippet--uploadForm").dialog( { modal: true, draggable: false } );
                }, "json");
        });
});
// aktivace "ajaxoveho" formulare
function activateAjaxForm () {
        $("#snippet--uploadForm form :submit").click(function () {
                $(this).ajaxSubmit();
                $("#snippet--uploadForm").dialog( "destroy" ); // po submitnuti zavreme dialog
                return false;
        });
}
</script>
22
Člen | 1478
+
0
-

ajaxem nejde uploadovat soubory

MW
Člen | 615
+
0
-

v tom pripade to je vyresene…
Dekuji !

Nicmene, jsem videl nejake ajax uploadery, nezkoumal jsem je, ale tedy predpokladam, ze se to jen tak tvari :)

22
Člen | 1478
+
0
-

ano, dělá se to přes iframe viz. třeba tady

iguana007
Člen | 970
+
0
-

nebo použij jeden z Nette addonů, který využívá alternativní metody uploadu souborů (flash, html5, silverlight apod.), tam ajax použít můžeš.