Nahrávání fotky na web a uložení cesty do db
- Hitny14
- Člen | 90
Ahoj, snažím se o nahrávání fotky na web do složky např obrázky a cesta aby se mi uložila do databaze a dopracoval jsem se k chybě Call to undefined function Nette\Http\finfo_file()
Laděnka mi vyhodila chybu na řádku 89:
}
80:
81:
82: /**
83: * Returns the MIME content type of an uploaded file.
84: * @return string
85: */
86: public function getContentType()
87: {
88: if ($this->isOk() && $this->type === NULL) {
89: $this->type = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $this->tmpName);
90: }
91: return $this->type;
92: }
Díky za radu!
- David Matějka
- Moderator | 6445
a zkousel si hledat? :)
https://forum.nette.org/…a-form-image
https://forum.nette.org/…p-finfo-file
- Hitny14
- Člen | 90
Díky! Ted mám ale jinou chybu Class ‚App\Presenters\String‘ not found
Laděnka vyhazuje chybu na 109 řádku:
public function processAddZbozi($form)
102: {
103: $values = $form->getValues();
104:
105: try {
106:
107: if($values->obrazek->isOk() AND $values->obrazek->isImage())
108: {
109: $fileName = "obr_".String::webalize($values->obrazek->getName(), '.');
110: $fileTarget = WWW_DIR . "/obrazky/" . $fileName;
111: }
112: $this->zboziModel->AddZbozi($values, $fileTarget);
113: $this->flashMessage('Zbozí bylo uspěšně přidáno', 'success');
Nevím jestli mám dobře namespace
use Nette\Utils;
- David Matějka
- Moderator | 6445
- trida se nejmenuje
Nette\Utils\String
, aleNette\Utils\Strings
(s na konci) - v importech musis mit
use Nette\Utils\Strings
, pri pouzitiuse Nette\Utils
bys v kodu musel pouzivatUtils\Strings
, doporucuju nastudovat namespaces
Editoval matej21 (31. 7. 2014 15:21)
- Michal Vyšinský
- Člen | 608
Ne nemáš:
use Nette\Utils\Strings;
A bylo by dobré si něco o namespace přečíst.
- Hitny14
- Člen | 90
díky! Ještě mám jednu chybu Call to a member function move() on a non-object
Laděnka řádek 112:
public function processAddZbozi($form)
103: {
104: $values = $form->getValues();
105:
106: try {
107:
108: if($values->obrazek->isOk() AND $values->obrazek->isImage())
109: {
110: $fileName = "obr_".Strings::webalize($values->obrazek->getName(), '.');
111: $fileTarget = WWW_DIR . "/obrazky/" . $fileName;
112: $fileName->move(WWW_DIR . "/obrazky/");
113: }
114: $this->zboziModel->AddZbozi($values, $fileTarget);
115: $this->flashMessage('Zbozí bylo uspěšně přidáno', 'success');
116: $this->redirect('Nastroje:default');
- Michal Vyšinský
- Člen | 608
Douč se základy PHP – $fileName nastavuješ na string a pak na něm voláš metodu?
Editoval Michal Vyšinský (31. 7. 2014 17:03)
- Michal Vyšinský
- Člen | 608
Ano, ale nemůžeš move metodu volat na string. move metodu má třída
‚FileUpload‘ takže bys to měl volat na
$values->obrazek
.
Takže takto:
$values->obrazek->move($fileTarget);
A ještě jedna věc – používáš za blokem ‚if‘ proměnné, které definuješ v tom bloku, takže pokud nebude upload ok nebo to nebude obrázek, tak budeš dostávat chyby, že používáš nedefinovanou proměnnou
Editoval Michal Vyšinský (31. 7. 2014 17:11)