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
+
0
-

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.

David Matějka
Moderator | 6445
+
0
-

ve $values->obrazek je https://api.nette.org/…eUpload.html

Karel Chramosil
Člen | 105
+
0
-

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.

studna
Člen | 181
+
0
-

Zkus si přečíst, co napsal matej21. Respektive podívej se na ten odkaz. Uvidíš metodu __toString.

jansfabik
Člen | 193
+
0
-
file_get_contents($values->obrazek->getTemporaryFile());
Karel Chramosil
Člen | 105
+
0
-

Moc děkuji, příkaz od jansfabik uloží obrázek do databáze.

<?php
'obrazek'=>file_get_contents($values->obrazek->getTemporaryFile());
?>
studna
Člen | 181
+
0
-

Správnější je

$values->obrazek->getContents()

Ale to by ses na to API musel podívat..

Editoval studna (13. 10. 2012 20:29)