Potřebuji do databáze uložit obrázek pomocí formuláře příkazem addUpload a nevím kde dělám chybu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Karel Chramosil
- Člen | 105
PHP 5.3.9, nette 2.0 Zdrojový kód:
use Nette\Application\UI\Form;
use Nette\Security as NS;
$form->addUpload('obrazek', 'Obrázek:')
->addRule(Form::IMAGE, 'Obrázek musí být JPEG, PNG nebo GIF.')
->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 1,6 MB.', 1600 * 1024 /* v bytech */);
$form->addSubmit('set', 'Uložit data');
$form->onSuccess[] = callback($this, 'editaceFormSubmitted');
return $form;
}
public function editaceFormSubmitted(Form $form)
{
$values = $form->getValues();
$user = $this->getUser();
try {
$this->context->database->table('sklad')->insert(array(
'user_id'=>$user->id,
'nazev'=>$values->nazev,
'popis'=>$values->popis,
'kusu'=>$values->kusu,
'kusuvboxu'=>$values->kusuvboxu,
'boxu'=>$values->boxu,
'obrazek'=>$values->obrazek, /* zde se má uložit obrázek, ale uloží se 46Bytů nečeho? */
'cenanakup'=>$values->cenanakup,
'cenaprodej'=>$values->cenaprodej,
'sleva'=>$values->sleva,
'rabat'=>$values->rabat,
'dph'=>$values->dph,
'datum_zapsal'=>new DateTime()
));
$this->flashMessage('Data byla uložena.', 'success');
$this->redirect('SkladNovy:');
} catch (PDOException $e) {
$form->addError('Zadaná data nejsou správné.');
}
}
}
Předem děkuji za radu.
- Karel Chramosil
- Člen | 105
Bohužel do proměnné $values->obrazek se uloží C:\Program Files\EasyPHP-5.3.9\tmp\php9BC8.tmp
místo cesty k obrázku. Sobor php9BC8.tmp neexistuje.
- Karel Chramosil
- Člen | 105
Moc děkuji, příkaz od jansfabik uloží obrázek do databáze.
<?php
'obrazek'=>file_get_contents($values->obrazek->getTemporaryFile());
?>