PDF upload problém – best practice?
- thesmith
- Člen | 5
ahoj, s nette pracuju jen občas a využívám jej hlavně na formuláře, mám však problém s uploadováním souborů. Zatím to testuji na localhostu.
Problém je, že mi to soubor nedá tam kam chci já – teda neuploadne ho nikam. Tady je kod z presenteru:
vytvoření formuláře:
<?php
protected function createComponent($name)
{
switch ($name) {
case 'addForm';
$id = $this->getParam('id');
$form = new AppForm;
$this->addComponent($form, $name);
$form->addTextArea('nadpis', 'Nadpis: ', 30, 1)
->addRule(Form::FILLED, 'Zadejte nadpis produktu.');
$form->addTextArea('popis', 'Popis : ', 40, 5)
->addRule(Form::FILLED, 'Zadejte popis produktu.');
$form->addFile('dokument', 'Vyberte pdf soubor : ')
->addRule(Form::MIME_TYPE, 'Přílohou musí být PDF soubor', 'application/pdf');
$form->addSubmit('tlacitko', 'Odeslat');
$form->onSubmit[] = array($this, 'formSubmitted');
return;
default:
parent::createComponent($name);
}
}
?>
a následné zpracování formuláře:
<?php
public function formSubmitted(AppForm $form){
if ($form['tlacitko']->isSubmittedBy()) {
$id = (int) $this->getParam('id');
if ($id > 0) {
$this->model->update($id, $form->getValues(), 'product');
$this->flashMessage('Záznam byl upraven.');
} else {
$values = $form->getValues();
$file = $form['dokument']->getValue();
if ($file->isOK())
{
$file->move(WWW_DIR . "/../uploads");
}
else
{
$file->addError("Upload file was not successful");
}
$values=array(
'nadpis'=>$values['nadpis'],
'popis'=>$values['popis'],
'dokument' => $values['dokument'],
'dokument' => mysql_real_escape_string($dokumentPath),
);
$this->model->insertProduct($values);
$this->flashMessage('Záznam uložen.');
}
}
$this->redirect('Default:');
}
?>
ví někdo kde je chyba? hledal jsem nějakej „best practice“, ale bez výsledku a ve FAQ taky nic :(
Předem díky všem za pomoc.
- Ondřej Mirtes
- Člen | 1536
Má ta složka uploads
právo k zápisu? Existuje? Nebo se ti
vypisuje ten error „Upload file was not successful“?
Jinak ten kód vypadá OK.
- Ondřej Mirtes
- Člen | 1536
Jé, já už vidím tu chybu :)
$file->addError("Upload file was not successful");
Musíš to volat na $form
:) a dumpni si
$file->getError()
, ať vidíš, co za chybu to je. Bude to
nějaká číselná konstanta.
- worsik
- Člen | 40
Ahoj, uvažuji, jestli nebude chyba v rozpoznávání mime typu.
řeším podobný problém, protože mi filtr mime type nepozná PDF
dokument.
- Bernard Williams
- Člen | 207
Nazdárek,
zkus v tom zpracování formuláře zakomentovat to přesměrování –
$this->redirect('Default:');
. Já s tím nedávno měl problém
a ac to zní sebevíc absurdně, tak ono zakomentování redirectu ve
zpracování formuláře opravdu pomohlo. Dál jsem, bohužel, neměl čas to
víc řešit.
Bernard