【问题标题】:Symfony: Allow multiple mime-typesSymfony:允许多种 mime 类型
【发布时间】:2012-08-24 10:07:41
【问题描述】:

我正在尝试允许在我的文件上传中包含多种 MIME 类型。我尝试过这样的事情:

$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'));

它似乎正在接受数组,并且似乎我做得对。我在这里错过了什么吗?

【问题讨论】:

  • 您要允许哪种 mime 类型?
  • pdf 和图像现在,我关心的是如何启用而不是启用哪个。

标签: php symfony1 symfony-1.4 symfony-forms


【解决方案1】:

sfValidatorFile 文档说:

mime_types: Allowed mime types array or category (available categories: web_images)

(sfValidatorFile.php,第 27 行)。 它允许 mime 类型数组或(一个)类别(不是类别数组)。这就是您的代码不起作用的原因。

【讨论】:

    【解决方案2】:

    你在错误的地方混了很多东西。把事情简单化。您可以为所需的每个 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 选项。

    【讨论】:

    • 这不是我正在寻找的解决方案。我已经提到我不想将类别/类型合并到单个数组中。我只是想知道为什么这不起作用。
    • + web_images mime-category 默认情况下已经存在于验证器中,我应该能够简单地将 application/pdf 的数组添加为类别,然后将其与 web_images 一起添加到 mime_type 中,例如: 'mime_types' => array('application', 'web_images') 没有重新定义 web_images 的类别列表
    猜你喜欢
    • 2020-03-19
    • 1970-01-01
    • 2010-12-14
    • 2021-10-04
    • 2015-02-15
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多