Jak ustawić dozwolone rozszerzenia dla pola formularza plik_zarządzany?

27

Nie mając szczęścia, znajdź to w dokumentacji Drupala lub w przykładach programistów. Muszę ustawić pole formularza plik_zarządzany, aby zezwalać tylko na pliki zip w niestandardowym module Drupal 7.

Garrett
źródło

Odpowiedzi:

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
źródło
1
Próbowałem file_validate_size, ale to nie działa.
ARUN
Dla mnie to nie działa.
Mr_DeLeTeD
pochodzimy z $ foo?
khaled_webdev
Wygląda na to, że sprawdzanie poprawności nie następuje automatycznie, jeśli plik zostanie zapisany ręcznie. Musiałem to zrobić w następujący sposób:$file = file_save_upload('file', $form['picture']['file']['#upload_validators']);
Leksat
Działa to również w Drupal 8.
sanzante
1

Nie jestem pewien, czy używasz Drupal 6 czy Drupal 7, ale w Drupal 6 wybrałbyś:

  • Administrator > Treść > Typy treści > [Twój typ treści]> Zarządzaj polami > [Edytuj pole pliku] i poszukaj ustawienia pola „Dozwolone rozszerzenia plików do przesłania”

  • W tym polu wpisz zip

Drupal 7 jest prawdopodobnie podobny. Poszukaj typów treści w części Administrator > Struktura .

BLISKO CIEMNY
źródło
Drupal 7, przepraszam za pominięcie. Używam elementu formularza zarządzanego pola w niestandardowym module, więc administrator nie pomoże. Potrzebuję rozwiązania programistycznego.
Garrett
4
Wierzę, że możesz użyć #upload_validators: $ form ['file'] ['# upload_validators'] ['file_validate_extensions'] [0] = 'png jpg gif pdf';
POBLIŻU CIEMNY
NEAR DARK wygrywa. Wklejenie w tym wierszu uświadomiło mi, że mam literówkę w mojej oryginalnej tablicy przedmiotów formularza. Zasadniczo jest to dobrze udokumentowana funkcja interfejsu API formularza, której nie otrzymałem z powodu błędu ortograficznego. Przepraszam chłopaki.
Garrett,
Uwaga: w Drupal 6 nie ma pola formularza plik_zarządzany, tylko plik. Źródło: Dokumentacja interfejsu API formularza Drupal 6
Bart