Posílání souboru
- uestla
- Backer | 799
Dobrý den přeji všem.
Poprvé jsem zkusil ve své app přidat do formuláře odesílání souboru. Při zpracování mi ale vyběhne Warning že cílová složka hlásí Permission denied. Tu jest kód:
protected function createComponentUploadForm()
{
$form = new AdminForm();
$form->addFile('image', 'Foto/Bild:')
->addRule(Form::FILLED, 'Geben Sie bitte ein Foto oder ein Bild auf.')
->addRule(Form::MIME_TYPE, 'Die Datei hat einen schlechten Format (JPG, GIF oder PNG verlangt)!', 'image/*');
$form->addSubmit('send', 'Absenden');
$form->onSubmit[] = array($this, 'uploadFormSubmitted');
return $form;
}
public function uploadFormSubmitted(AppForm $form)
{
$file = $form['image']->getValue();
$file->move(WWW_DIR . '/pictures/');
$this->flashMessage('Das Bild "' . $file->getName() . '" wurde erfolgreich gesendet.', 'success');
$this->redirect('this');
}
Nevie niekto poradiť? Ďakujem bardzo.
Nette zdar
- Bernard Williams
- Člen | 207
Nazdárek,
má ta složka právo zápisu? Z té chybové hlášky bych řekl, že nemá..
Bernard
- uestla
- Backer | 799
Bernard Williams napsal(a):
Nazdárek,
má ta složka právo zápisu? Z té chybové hlášky bych řekl, že nemá..
Bernard
No, jedu na Windowsech, takže tam práva složek moc neřeším. Přesto
jsem se koukal na zdroják metody HttpUploadedFile::move()
,
nastavuje se tam cílové složce CHMOD 755 – nemá to přeci jen (přestože
na Windowsech) na to vliv?
Ještě doplním:
PHP 5.2, Nette 0.9.3, 2ce0ca6 released on 2010–02–02
- brazvo
- Člen | 15
@Uestla
Presne tento problem som riesil a nakoniec mi to nedalo a musel som vyuzit kod, ktorym som nahraval obrazky predtym, ako som spoznal Nette, ale uz som to vyriesil. Mam pocit, ze si tiez postupoval podla navodov, ktore si nasiel tu na fore, len ze je tam maly pruser, ktory som odhalil az pri prezreti kodu v HttpUploadedFile.php. Tam sa totizto pocita s tym, ze s metodou move() sa posiela okrem cesty aj nazov suboru. Cize by to malo vyzerat takto.
public function uploadFormSubmitted(AppForm $form)
{
$file = $form['image']->getValue();
$imgname = $file->getName();
$file->move(WWW_DIR . '/pictures/' . $imgname); //popr. primo zadat $file->getName()
// alebo uplne iny nazov
$this->flashMessage('Das Bild "' . $file->getName() . '" wurde erfolgreich gesendet.', 'success');
$this->redirect('this');
}
Samozrejme plati aj to, ze adresar pictures musi mat prava na zapis
- Honza Kuchař
- Člen | 1662
https://api.nette.org/…ile.php.html#163
Potřebuje jako parametr nový název souboru i s cestou!