[ZEND] Avatar upload form werkt niet
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
class Application_Form_AvatarUpload extends Zend_Form
{
public function init()
{
//validators
$notEmptyValidator = new Zend_Validate_NotEmpty();
$notEmptyValidator->setMessage('Dit veld is verplicht.');
$extensionValidator = new Zend_Validate_File_IsImage();
$extensionValidator->setMessage('Je hebt geen geldig bestand opgegeven.');
$imageSizeValidator = new Zend_Validate_File_ImageSize(array('minwidth' => 10, 'minheight' => 10, 'maxwidth' => 100, 'maxheight' => 100));
$imageSizeValidator->setMessage('Je gekozen afbeelding mag slechts 100 bij 100 pixels groot zijn.');
$uploadImage = new Zend_Form_Element_File('uploadImage');
$uploadImage->setLabel('Afbeelding zoeken op je computer')
->setRequired(true)
->addValidators(array($notEmptyValidator, $extensionValidator, $imageSizeValidator));
$submit = new Zend_Form_Element_Submit('Uploaden');
$this->addElements(array(
$uploadImage, $submit
));
}
}
?>
class Application_Form_AvatarUpload extends Zend_Form
{
public function init()
{
//validators
$notEmptyValidator = new Zend_Validate_NotEmpty();
$notEmptyValidator->setMessage('Dit veld is verplicht.');
$extensionValidator = new Zend_Validate_File_IsImage();
$extensionValidator->setMessage('Je hebt geen geldig bestand opgegeven.');
$imageSizeValidator = new Zend_Validate_File_ImageSize(array('minwidth' => 10, 'minheight' => 10, 'maxwidth' => 100, 'maxheight' => 100));
$imageSizeValidator->setMessage('Je gekozen afbeelding mag slechts 100 bij 100 pixels groot zijn.');
$uploadImage = new Zend_Form_Element_File('uploadImage');
$uploadImage->setLabel('Afbeelding zoeken op je computer')
->setRequired(true)
->addValidators(array($notEmptyValidator, $extensionValidator, $imageSizeValidator));
$submit = new Zend_Form_Element_Submit('Uploaden');
$this->addElements(array(
$uploadImage, $submit
));
}
}
?>
De form werkt wel goed, maar ook al upload ik een .png of .gif bestand, ik krijg altijd de foutmelding: 'Je hebt geen geldig bestand opgegeven.'.
Iemand die mij kan helpen?
Alvast bedankt.
Zoek eens in de code naar de Zend_Validate_File_IsImage functie, die zal ergens refereren naar mime types.
Bedankt voor je reactie Roy. In _IsImage() kon je ook nog een optionele variable meegeven met mimetypes, dat heb ik ook al geprobeerd, maar dan nog blijft het die foutmelding geven.
Chi Lion ik snap niet helemaal wat je bedoelt. Moet ik Zend_Form_Transfer() toevoegen aan ->addElements() ofzo?
Code (php)
1
2
3
4
2
3
4
<?php
$upload->addValidator('ExcludeMimeType', false, array('image/gif',
'image/jpeg');
?>
$upload->addValidator('ExcludeMimeType', false, array('image/gif',
'image/jpeg');
?>
Volgens mij moet je op het form nog een enctype meegeven:
Als je toch zeker bent dat je een bestand krijgt, dan kan je tijdens het POST-en even kijken wat er in die Zend_Form_Element_File zit. De filename moet in ieder geval ingevoerd zijn!
de VeeWee niet, als het goed is geeft Zend dat auto. mee.
Code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
class Application_Form_AvatarUpload extends Zend_Form
{
public function init()
{
//validators
$notEmptyValidator = new Zend_Validate_NotEmpty();
$notEmptyValidator->setMessage('Dit veld is verplicht.');
$imageSizeValidator = new Zend_Validate_File_ImageSize(array('minwidth' => 10, 'minheight' => 10, 'maxwidth' => 100, 'maxheight' => 100));
$imageSizeValidator->setMessage('Je gekozen afbeelding mag slechts 100 bij 100 pixels groot zijn.');
$uploadImage = new Zend_Form_Element_File('uploadImage');
$uploadImage->setLabel('Afbeelding zoeken op je computer')
->setRequired(true)
->addValidators(array($notEmptyValidator, $imageSizeValidator))
->addValidator('ExcludeMimeType', false, array('image/gif',
'image/jpeg'));
$submit = new Zend_Form_Element_Submit('Uploaden');
$this->setAttrib('enctype', 'multipart/form-data');
$this->addElements(array(
$uploadImage, $submit
));
}
}
?>
class Application_Form_AvatarUpload extends Zend_Form
{
public function init()
{
//validators
$notEmptyValidator = new Zend_Validate_NotEmpty();
$notEmptyValidator->setMessage('Dit veld is verplicht.');
$imageSizeValidator = new Zend_Validate_File_ImageSize(array('minwidth' => 10, 'minheight' => 10, 'maxwidth' => 100, 'maxheight' => 100));
$imageSizeValidator->setMessage('Je gekozen afbeelding mag slechts 100 bij 100 pixels groot zijn.');
$uploadImage = new Zend_Form_Element_File('uploadImage');
$uploadImage->setLabel('Afbeelding zoeken op je computer')
->setRequired(true)
->addValidators(array($notEmptyValidator, $imageSizeValidator))
->addValidator('ExcludeMimeType', false, array('image/gif',
'image/jpeg'));
$submit = new Zend_Form_Element_Submit('Uploaden');
$this->setAttrib('enctype', 'multipart/form-data');
$this->addElements(array(
$uploadImage, $submit
));
}
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$uploadImage = new Zend_Form_Element_File('image');
$uploadImage->setLabel('Afbeelding zoeken op je computer')
->addValidator('Extension', true, 'jpeg, jpg, png')
->addValidator('Size', true, 2048000)
->setDestination('absoluut pad naar map' . '/tmp/')
->setValueDisabled(true);
/**
* In de controller:
*/
if ($form->image->receive()) {
$image = $form->getValue('image');
// etc
}
?>
$uploadImage = new Zend_Form_Element_File('image');
$uploadImage->setLabel('Afbeelding zoeken op je computer')
->addValidator('Extension', true, 'jpeg, jpg, png')
->addValidator('Size', true, 2048000)
->setDestination('absoluut pad naar map' . '/tmp/')
->setValueDisabled(true);
/**
* In de controller:
*/
if ($form->image->receive()) {
$image = $form->getValue('image');
// etc
}
?>
Thanks Chilion en Phoenix, het is nu opgelost.
graag gedaan :)
Copy that.