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

Co nejvíce stručné řešení pro vývojáře a linux administrátory

Na superuser.cz nenaleznete žádný zbytečný obsah, vždy se jde přímo k věci, denně se zde objevují nové problémy a jejich řešení...

Začít používat

PHP Nette - jak provést upload souboru…

17.11.2017 napsal Misfit

Vyřešeno
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
Nejlépe hodnocení uživatelé
Hanz

Počet UP: 5084

React: 212

Rusty

Počet UP: 2347

React: 98

OL3G

Počet UP: 1637

React: 59

SYSTEM

Počet UP: 436

React: 23

Strosmajer

Počet UP: 492

React: 22

Oxytocin

Počet UP: 296

React: 16

Hyacint

Počet UP: 37

React: 11

RE: PHP Nette - jak provést…

19.11.2017 odpověděl Hanz

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