Drupal формы: загрузка картинок с валидацией на размер файла, размеры картинки и тип файла

В веб-программировании считается очень дурным тоном, если вы не выставляете жестких ограничений / требований к файлам, которые пользователи будут загружать на сайт, т.к. среди массы посетителей обязательно найдутся те, кто намеренно или непреднамеренно попытается к примеру вместо разрешенной картинки залить что-нибудь нехорошее для нас с вами. Потому будем лимитировать юзеров.

На примере CMS Drupal 7 я покажу, как можно приделать валидаторы на размер загружаемого файла, его тип, а также размеры изображения (максимальная-минимальная высота, максимальная-минимальная ширина).

Дабы не загромождать статью, публикую вполне конкретную часть программного кода, которая задает проверку на соответствие картинки заданным программистом требованиям:

<?php
function RedBookCmsRu_uploadForm_validate(&$form, &$form_state) {

    $validators = array(
        // Проверка, действительно ли файл является изображением:
        'file_validate_is_image' => array(),
        // Проверка на допустимые расширения:
        'file_validate_extensions' => array('png gif jpg jpeg'),
        // Разрешение картинки от 202x202 до 800x800:
        'file_validate_image_resolution' => array('800x800', '202x202'),
        // Проверка на размер файла (максимум 1МБ):
        'file_validate_size' => array(1 * 1024 * 1024),
    );

    // Загружаем файл в sites/default/files (по умолчанию):
    if ($file = file_save_upload('yourSite_logo', $validators, 'public://')) :
        // Передаём информацию о файле в функцию RedBookCmsRu_uploadForm_submit():
        $form_state['values']['yourSite_logo'] = $file;
    endif;
}
?>

Итак, если поглядеть на показанный выше фрагмент, вы можете увидеть следующие требования к закачиваемому пользователем файлу, которые я выставил:

  • Допустимые разрешения изображения — от 202 на 202 px до 800 на 800 px.
  • Допустимые расширения, типы файлов — PN, JPG, JPEG, GIF.
  • Максимально допустимый размер файла — не более 1МБ.

Drupal формы - валидация загружаемых файлов

Форма задается функцией RedBookCmsRu_uploadForm(), которая была преднамеренно опущена в данном контексте, иначе получилось бы то ещё «полотенце» на 70-100 строчек.

Опубликовано 5-12-2013 в 11:42


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>











Свежие комментарии

  • krasnov8953: к записи Не работает как мне кажется строчка $newTvId = $ »
  • Dimanski: к записи ничего не понимаю. Ставлю ModX на хостинг r01.ru »
  • Дмитрий: к записи Спасибо! Очень выручили. С битриксом беда, а прав »
  • леонид: к записи как сделать что были в ряд? у меня получается по о »
  • Администратор: к записи Статический IP. »
  • Steel: к записи Администратор, вы данную проблему решили подключен »
  • Дмитрий: к записи Хотел узнать как прикрутить данное окно (http://re »

Последние твиты