Problém s file upload
- choko
- Člen | 8
Ahoj,
mám komponentu
protected function createComponentGallery() {
$form = new AppForm($this, 'gallery');
$form->addFile('photo', 'Fotografie č. 1:');
$form->addSubmit('upload', 'Upload')
->onClick[] = array($this, 'upload');
return $form;
}
přes, kterou chci nahrávat fotky na server, jenže mi to nefunguje, a když to dumpnu, tak mi to neustále vrací toto:
object(HttpUploadedFile) (6) {
"name" private => string(12) "IMG_3487.JPG"
"type" private => string(0) ""
"realType" private => NULL
"size" private => int(0)
"tmpName" private => string(0) ""
"error" private => int(1)
}
Kde by mohla být chyba?
- kravčo
- Člen | 721
choko napsal(a):
Kde by mohla být chyba?
Tu ;)
"error" private => int(1)
error je 1, teda UPLOAD_ERR_INI_SIZE, uploaduješ príliš veľký súbor.
- David Grudl
- Nette Core | 8227
V API HttpUploadedFile je metoda isOk(), kterou se musí ověřit, zda upload proběhl ok.
- choko
- Člen | 8
Ještě bych měl jeden dotaz.
Trochu jsem upravil komponentu takto:
protected function createComponentGallery() {
$form = new AppForm($this, 'gallery');
$form = $form->addContainer('file');
$form->addFile('1', 'Fotografie:');
$form->addFile('2', 'Fotografie:');
$form->addFile('3', 'Fotografie:');
$form->addFile('4', 'Fotografie:');
$form->addSubmit('upload', 'Upload')
->onClick[] = array($this, 'upload');
return $form;
}
a zpracovávám ji takto:
public function upload(SubmitButton $submit) {
$data = $submit->getForm()->getValues();
$id = $this->getParam('id');
Debug::dump($data);
foreach($data['file'] as $d) {
if($d->isOK()) {
Photos::savePhoto($id, $d);
}
}
}
Jenže onen dump vrací toto a to jsem velikost uploadu zvětšil na 20M:
array(1) {
"file" => array(4) {
1 => NULL
2 => NULL
3 => NULL
4 => NULL
}
}
- kravčo
- Člen | 721
Súbory na upload musíš pridávať kontajneru, handler formuláru i vrátiť treba formulár.
nesprávne:
$form = new AppForm($this, 'gallery');
$form = $form->addContainer('file');
// ...
správne:
$form = new AppForm($this, 'gallery');
$files = $form->addContainer('file');
$files->addFile('1', 'Fotografie:');
$files->addFile('2', 'Fotografie:');
$files->addFile('3', 'Fotografie:');
$files->addFile('4', 'Fotografie:');
$form->addSubmit('upload', 'Upload')
->onClick[] = array($this, 'upload');
return $form;
- _Martin_
- Generous Backer | 679
kravčo napsal(a):
choko napsal(a):
Kde by mohla být chyba?
Tu ;)
"error" private => int(1)
error je 1, teda UPLOAD_ERR_INI_SIZE, uploaduješ príliš veľký súbor.
Snad to nebude bráno jako neskromné upozornění na vlastní dílo, ale jak ošetřit takovéto chyby se můžeš podívat v mých starších příspěvcích: tady a tady.
P.S. Davide, co to zaintegrovat do frameworku?