PHP Nette - jak provést upload souboru a zapsat ho do databáze

PHP Nette - jak provést upload souboru a zapsat ho do databáze

Ahoj, učím se pracovat v PHP s Nette frameworkem, pročítal jsem si základní návody na vytvoření formulářů - to mi funguje. Ale nevím si rady s tím, jak provést jednoduchý upload souboru na server, soubor pak přejmenovat dle aktuálního data a zapsat jeho název do databáze MySQL. Poradí mně prosím někdo? Díky

ODPOVĚĎ


Ahoj,

pokud ti jde opravdu o jednoduchý upload souboru na server v Nette, tak můžeš zkusit následujíci konstrukci.

Ta ti nahraje soubor do /www/upload/* , přejmenuje soubor dle hodnoty z formuláře a zapíše cestu k souboru do databáze.

Presenter:



protected function createComponentUploadForm()
{

$form = new Nette\Application\UI\Form;

$form->addText('pojmenovani', 'Pojmenování souboru:')
->setRequired();
$form->addUpload('upload', 'Soubor');
$form->addSubmit('send', 'Uložit');
$form->onSuccess[] = [$this, 'uploadFormSucceeded'];

return $form;

}

public function uploadFormSucceeded($form, $values)
{

if (filesize ($values->upload) > 0) { //kdyz je soubor skutecne poslan z formu

$soubor = $values->upload;
$soubor->move("upload/" . $values->upload->name);

if($soubor->isOk()) {

//prejmenovani souboru
$soubor->move('upload/' . $values->pojmenovani. '.txt');

}

$this->database->table('soubory')->insert([
'Soubor' => ('upload/' . $values->pojmenovani. '.txt'),
]);

$this->flashMessage('Soubor byl přidán', 'success');
$this->redirect('this');

} else {

$this->flashMessage('Soubor nebyl přidán', 'failed');
$this->redirect('this');

}


}

Jak se ti článek líbil?

Komentáře (0)

Přidat komentář