Drupal: Загрузка файлов средствами Form API

Пример загрузки картинки с помощью Form API:

function mymodule_form() {
$form = array(
'#attributes' => array('enctype' => 'multipart/form-data'), // обязательный параметр
);
$form['file'] = array(
'#type' => 'file',
'#title' => 'Картинка',
'#description' => 'Выберите файл с расширением jpg, jpeg, png или gif',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
return $form;
}
 
function mymodule_form_validate($form, &$form_state) {
$validators = array(
'file_validate_is_image' => array(), // Проверка, действительно ли файл является изображением
'file_validate_extensions' => array('png gif jpg jpeg'), // Проверка на расширения
);

подробнее