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

1 odpovědí
17.11.2017 napsal Misfit dotaz do kategorie programovani 10 / 9

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

Vyřešeno

programovani php nette upload mysql databáze oop

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

19.11.2017 odpověděl Hanz Superuser
Zkontrolováno

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');

    }


}

Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace