我正在尝试允许多个mime-types包含在我的文件上传中。我试过这样的事情:
$this->validatorSchema['filename'] = new sfValidatorFile(array(
'required' => false,
'path' => sfConfig::get('sf_upload_dir'),
'mime_categories' => array(
'application' => array(
'application/pdf'
),
'web_images' => array(
'image/jpeg',
'image/pjpeg',
'image/png',
'image/x-png',
'image/gif',
)
),
'mime_types' => array('application', 'web_images')
));
我不想让所有类型的mime类型都包含在我的上传中,而且我也不想将类别/类型合并到单个数组中。有没有人面对这个或知道为什么会这样?
来自sfValidatorFile.class.php
$mimeTypes = is_array($this->getOption('mime_types')) ? $this->getOption('mime_types') : $this->getMimeTypesFromCategory($this->getOption('mime_types'));
似乎接受了数组,看起来我做得对。我在这里错过了什么吗?
答案 0 :(得分:3)
sfValidatorFile文档说:
mime_types: Allowed mime types array or category (available categories: web_images)
(sfValidatorFile.php,第27行)。 它允许mime类型数组OR(一)类别(不是类别数组)。这就是你的代码无效的原因。
答案 1 :(得分:0)
你在错误的地方混了很多东西。把事情简单化。您可以为每个所需的mime_types提供参数 mime_types
。
例如,我在这里接受所有类型的图片或pdf:
$mime_types = array(
'image/jpeg',
'image/pjpeg',
'image/png',
'image/x-png',
'image/gif',
'application/pdf',
);
$this->validatorSchema['filename'] = new sfValidatorFile(array(
'mime_types' => $mime_types
), array(
'invalid' => 'Invalid file.',
'required' => 'Select a file to upload.',
'mime_types' => 'The file type is incorrect.'
));
击> <击> 撞击>
修改强>
好吧,我明白了你的意思。你的代码几乎是正确的但是关于如何完成mime_types
检查,如果你给出一个数组,这意味着它是一个mime_types数组,而不是一个类别数组。如果你没有给出一个数组,那就意味着它是一个mime类。
这听起来像是symfony中的一个错误,但是你应该给出一个合并数组,然后将它传递给mime_types选项。