Bagaimana cara saya mengatur ekstensi yang diizinkan untuk bidang formulir managed_file?

27

Tidak beruntung menemukan ini dalam dokumentasi Drupal atau contoh pengembang. Saya perlu mengatur bidang formulir managed_file untuk hanya mengizinkan file zip dalam modul kustom Drupal 7.

Garrett
sumber

Jawaban:

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),
  ),
);
Bart
sumber
1
Saya mencoba file_validate_size, tetapi tidak berfungsi.
ARUN
Tidak berhasil bagiku.
Mr_DeLeTeD
apakah kita berasal dari $ foo?
khaled_webdev
Sepertinya validasi tidak terjadi secara otomatis jika Anda menyimpan file secara manual. Saya harus melakukannya seperti ini:$file = file_save_upload('file', $form['picture']['file']['#upload_validators']);
Leksat
Ini juga berfungsi di Drupal 8.
sanzante
1

Saya tidak yakin apakah Anda menggunakan Drupal 6 atau Drupal 7, tetapi di Drupal 6 Anda akan memilih:

  • Admin > Konten > Jenis Konten > [Jenis Konten Anda]> Kelola Bidang > [Edit bidang file Anda] dan cari pengaturan bidang "Ekstensi file unggahan yang diizinkan"

  • Di bidang itu, masukkan zip

Drupal 7 mungkin serupa. Cari Jenis Konten di bawah Admin > Struktur .

DEKAT DARK
sumber
Drupal 7, maaf atas kelalaiannya. Saya menggunakan item formulir managed_field dalam modul khusus, jadi admin tidak akan membantu. Saya butuh solusi pemrograman.
Garrett
4
Saya yakin Anda dapat menggunakan #upload_validators: $ form ['file'] ['# upload_validators'] ['file_validate_extensions'] [0] = 'png jpg gif pdf';
DEKAT DARK
DEKAT DARK memenangkannya. Butuh menempelkan di baris itu untuk menyadari bahwa saya memiliki kesalahan ketik dalam array item bentuk asli saya. Jadi pada dasarnya, ini adalah fitur yang terdokumentasi dengan baik dari form api yang tidak saya dapatkan karena kesalahan ejaan. Maaf kawan
Garrett
Catatan: tidak ada bidang formulir managed_file di Drupal 6, hanya file. Sumber: Referensi API Formulir Drupal 6
Bart