Symfony:允许多个mime类型

时间:2012-08-24 10:07:41

标签: php symfony1 symfony-1.4 symfony-forms

我正在尝试允许多个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'));

似乎接受了数组,看起来我做得对。我在这里错过了什么吗?

2 个答案:

答案 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选项。