Я хочу убедиться, что во время загрузки файла разрешен только файл в формате jpeg, png и gif. Таким образом, «Файл типа:» ниже на скриншоте должен показывать jpeg, png и gif:
http://lh5.ggpht.com/_SDci0Pf3tzU/ScynOZt_0qI/AAAAAAAAEo0/gMr_zxYofV4/s400/styleerror.png
Я сделал следующее для своего валидатора в Symfony:
$this->setValidator ( 'upload your filehere',
new sfValidatorFile ( array (
'required'=>true,
'mime_types' => array ('image/jpeg, image/png, image/gif' )
) ,
array(
'mime_types'=> 'only jpeg'
)
)
);
но когда я нажимаю на кнопку загрузки, файлы не фильтруются соответственно; что я сделал не так?
Я тоже пытаюсь
$this->setValidator ( 'upload your filehere',
new sfValidatorFile ( array (
'required'=>true,
'mime_types' => 'image/jpeg, image/png, image/gif'
) ,
array(
'mime_types'=> 'only jpeg'
)
)
);
Но это тоже не работает.
Я попробовал следующее в своем классе, но, к сожалению, это не сработало:
<?php
class UploadCaseForm extends sfForm {
public function configure() {
$this->setWidgets ( array ('Documents' => new sfWidgetFormInputFile ( ) ) );
$this->widgetSchema->setNameFormat ( 'UploadCase[%s]' );
$this->validatorSchema ['Documents'] = new sfValidatorFile (
array ('mime_types' => 'web_images' ),
array ('invalid' => 'Invalid file.',
'required' => 'Select a file to upload.',
'mime_types' => 'The file must be of JPEG, PNG or GIF format.' ) );
}
}
?>
Вот код действия:
public function executeIndex(sfWebRequest $request) {
$this->form = new UploadCaseForm ( );
if ($this->getRequest ()->getMethod () == sfRequest::POST) {
var_dump($request->getParameter('UploadCase'));
}
}
Редактировать: Принятый ответ является ответом в отношении проверки на стороне сервера. Если кому-то нужна проверка на стороне клиента, т. Е. Фильтрация типа файла, который можно загрузить даже до того, как операция попадет на сервер, то, возможно, не существует надежного способа сделать это из-за ограничения браузера .