managed_fileフォームフィールドに許可される拡張子を設定するにはどうすればよいですか?


27

Drupalのドキュメントまたは開発者の例でこれを見つけることができます。Drupal 7カスタムモジュールでzipファイルのみを許可するようにmanaged_fileフォームフィールドを設定する必要があります。

回答:


40
$form['picture']['file'] = array(
  '#type' => 'managed_file',
  '#title' => t('picture'),
  '#description' => t('Allowed extensions: gif png jpg jpeg'),
  '#default_value' => (isset($foo->picture->fid) ? $foo->picture->fid : ''),
  '#upload_location' => variable_get('picture_upload_location'),
  '#upload_validators' => array(
    'file_validate_extensions' => array('gif png jpg jpeg'),
    // Pass the maximum file size in bytes
    'file_validate_size' => array(MAX_FILE_SIZE*1024*1024),
  ),
);

1
file_validate_sizeを試しましたが、機能しません。
ARUN

私にはうまくいきません。
Mr_DeLeTeD 14年

私たちは$ fooから来ましたか?
khaled_webdev

ファイルを手動で保存すると、検証は自動的に行われないようです。私は次のようにしなければなりません$file = file_save_upload('file', $form['picture']['file']['#upload_validators']);
でした

これはDrupal 8でも機能します。
sanzante17年

1

Drupal 6とDrupal 7のどちらを使用しているかはわかりませんが、Drupal 6では次を選択します。

  • 管理者 > コンテンツ > コンテンツタイプ > [コンテンツタイプ]> [フィールドの管理 ]> [ファイルフィールドの編集]で、「許可されたアップロードファイル拡張子」のフィールド設定を探します

  • そのフィールドにzipと入力します

Drupal 7もおそらく似ています。探しコンテンツタイプの下の管理 > 構造


Drupal 7、省略して申し訳ありません。カスタムモジュールでmanaged_fieldフォームアイテムを使用しているため、管理者は支援しません。プログラミングソリューションが必要です。
ギャレット

4
#upload_validatorsを使用できると思います:$ form ['file'] ['#upload_validators'] ['file_validate_extensions'] [0] = 'png jpg gif pdf';
NEAR DARK

NEAR DARKが勝ちます。元のフォーム項目配列にタイプミスがあったことを理解するには、その行に貼り付ける必要がありました。基本的に、これはフォームapiのよく文書化された機能であり、スペルミスのために取得できませんでした。ごめんなさい
ギャレット

注:Drupal 6にはmanaged_fileフォームフィールドはなく、ファイルのみです。ソース:Drupal 6フォームAPIリファレンス
バート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.