Posílání souboru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
uestla
Backer | 799
+
0
-

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
+
0
-

Nazdárek,

má ta složka právo zápisu? Z té chybové hlášky bych řekl, že nemá..

Bernard

uestla
Backer | 799
+
0
-

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
+
0
-

@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
+
0
-

https://api.nette.org/…ile.php.html#163

Potřebuje jako parametr nový název souboru i s cestou!

uestla
Backer | 799
+
0
-

@brazvo

Díky moc, to je přesně ono!