1

ファイルのアップロードに複数の 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 タイプをアップロードに含めることを有効にしたくありません。また、カテゴリ/タイプを 1 つの配列にマージしたくありません。以前にこれに直面したことがありますか、またはなぜこれが起こっているのか知っていますか?

からsfValidatorFile.class.php

$mimeTypes = is_array($this->getOption('mime_types')) ? $this->getOption('mime_types') : $this->getMimeTypesFromCategory($this->getOption('mime_types'));

配列を受け入れているようで、正しくやっているようです。ここで何か不足していますか?

4

2 に答える 2

3

sfValidatorFile doc は次のように述べています。

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

(sfValidatorFile.php、27 行目)。MIME タイプの配列または (1 つの) カテゴリ (カテゴリの配列ではない) を使用できます。それがあなたのコードが機能していない理由です。

于 2012-08-24T18:56:28.020 に答える
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 オプションに渡す必要があります。

于 2012-08-24T11:00:13.000 に答える