Drupal формы: простая загрузка одиночных файлов

В продолжение моей предыдущей статьи (а скорее в качестве начала) публикую пример формы с полем для загрузки файлов, а точнее для закачки изображения заданных размеров, типа и т.п. Все закачанные посетителями файлы будут сохраняться в каталоге, заданном по умолчанию, т.е. обычно это что-то типа http://red-book-cms.ru/sites/default/files.

Пример формы загрузки файла в Drupal 7

Листинг (без учета функции валидации):

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

    $form['yourSite_logo'] = array(
        '#type' => 'file',
        '#title' => 'Логотип для вашего сайта',
        '#description' => 'Размер файла не более 1МБ. Картинка ' . 
            'в форматах JPG, JPEG, GIF, PNG. Размеры изображения от ' .
            ' 800x800 до 202x202 px.',
        '#size' => 27,
    );

    $form['buttons'] = array('#type' => 'actions');
    $form['actions'] = array(
        '#type' => 'submit', 
        '#value' => 'Залить картинку',
    );
    
    return $form;
}

function RedBookCmsRu_uploadForm_submit($form, &$form_state) {
    if ($form_state['values']['yourSite_logo']) {
        $yourSite_logo = $form_state['values']['yourSite_logo'];
        // Изменяем статус файла на "Постоянный":
        $yourSite_logo->status = FILE_STATUS_PERMANENT; 
        // Сохраняем новый статус:
        $yourSite_logo_saved = file_save($yourSite_logo); 
    }
    // А вот здесь, манипулируя fid вы можете присвоить 
    // только что закачанную картинку чему хотите...
    // if (isset($yourSite_logo_saved) {
    //    ...
    //    $yourSite_logo_saved->fid
    // }
}
?>
Скачать пример модуля

P.S. Загруженные через Drupal 7 API файлы, нужно удалят также через тот же API, а не просто стирать с жесткого диска, т.к. в противном случае останутся битые записи в таблице, никчему не привязанные, что не сулит вам ничем хорошим.

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


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

Ваш 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 »

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