Автоматическая загрузка файлов в Drupal 7. Модуль auto_upload. Загрузка файлов в drupal


Загрузка файлов в Drupal - Решено

я был возиться немного с разных решений, чего бы я видеть, как довольно распространенная проблема, но я до сих пор не в состоянии решить удовлетворительным образом.

то, Что я хочу достичь, - это какая-то функциональность, в которой пользователь может загружать новые файлы, или выберите существующий файлы, чтобы их использовать.

то, Что я использую до сих пор, является комбинацией filefield, filefield_sources, imce и ckeditor модули. Я думаю, ckeditor на самом деле не важно решение, но мне нужно, чтобы иметь возможность вставлять изображения из архива каким-то образом, и это делается с IMCE . Поскольку я не хочу, чтобы все было добраться из хранящиеся я создал подкаталог и задать полный доступ к нему в IMCE параметры, назовем его default/files/site

Это прекрасно работало, пока все filehanding было сделано через IMCE, но когда я загрузил файлы непосредственно из filefield мои файлы оказались в default/файлов root, так что я создавать папки для моих полей, например default/files/site/movies в поле, что позволило .flv формат. Это хорошо работало, пока я не пытался получить доступ к файлам через IMCE. Похоже, папки, созданные filefield недоступны из IMCE?

я тоже в положении, когда мне нужна поддержка больших загрузок (200MB ), но из моего опыта в другие проекты, позволяющие передачу файлов через FTP, как правило, палочка-выручалочка, но, насколько я понимаю IMCE не будет поддерживать файлы не загружены с помощью Drupal, в некотором роде, так как они не присутствуют в базе данных (давая сообщение: The selected file could not be used because the file does not exist in the database.)

я в курсе, что я на самом деле не очень ясный вопрос к моей проблеме, но как-то мне нужно, чтобы понять это довольно быстро. Как бы я желательно решить эту проблему? Я осознаю, что я не первый, кто эту проблему, но я до сих пор не смогли найти хорошее и стабильное решение. Что я пропустил?

v-resheno.ru

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

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

/** * Form builder. */ function mymodule_myform() { $form['file'] = array( '#type' => 'file', '#title' => 'Картинка', '#description' => 'Выберите файл с расширением jpg, jpeg, png или gif', );   $form['submit'] = array( '#type' => 'submit', '#value' => 'Отправить', );   return $form; }   /** * Form validate callback. */ function mymodule_myform_validate($form, &$form_state) { $validators = array( 'file_validate_is_image' => array(), // Проверка, действительно ли файл является изображением 'file_validate_extensions' => array('png gif jpg jpeg'), // Проверка на расширения 'file_validate_size' => array(1 * 1024 * 1024), // Проверка на размер файла (максимум 1mb) ); // Загружаем файл в sites/default/files (по умолчанию) if ($file = file_save_upload('file', $validators, 'public://')) { $form_state['values']['file'] = $file; // передаём информацию о файле в ф-ю mymodule_form_submit() } else { form_set_error('file', 'Файл не был загружен'); } }   /** * Form submit callback. */ function mymodule_myform_submit($form, &$form_state) { $file = $form_state['values']['file']; $file->status = FILE_STATUS_PERMANENT; // Изменяем статус файла на "Постоянный" file_save($file); // Сохраняем новый статус drupal_set_message('Картинка загружена'); }

Важно помнить, что ф-я file_save_upload() загружает файл на сервер, добавляет информацию о нём в таблицу file_managed и помечает его как "Временный", поэтому если вам необходимо пользоваться файлом в дальнейшем, то нужно в submit-е формы изменять статус файла на "Постоянный" (FILE_STATUS_PERMANENT) и вызывать file_save(), чтобы файл автоматически не удалился по прошествии времени .

Полезное дополнение к статье — Использование виджета AJAX загрузки файлов в своих формах.

Написанное актуально для Drupal 7 Похожие записи

xandeadx.ru

Автоматическая загрузка файлов в Drupal 7. Модуль auto_upload

Сегодня, проверяя опросники сайта – заметил, что больше десятка пользователей задали один и тот же вопрос, а именно «Расскажите пожалуйста, как выполнить автоматическую загрузку файла, при создании материала». Именно этим я и решил заняться, ибо данной задачи, как ни странно никогда не решал. На просторах drupal.org , был найден модуль, который вроде бы как решал нашу задачу, - autoupload. Но как всегда есть одно «НО» - у меня он категорически отказался заводиться. Естественно, что после неудачи - я полез в исходники модуля, с целью разобраться с реализацией и именно этот модуль натолкнул меня на мысль, что с данной задачей можно легко справиться через jQuery, файл которого не превышает 1кб.

Собственно осталось все это дело реализовать и в конечном счете был создан модуль auto_upload. Так же решил добавить пока одну настройку – это выбор, для каких типов материалов необходимо добавлять данную опцию. Возможно, нужна реализация с ограничениями по ролям пользователей, но это по вашему желанию – если нужно будет, допишу.

Теперь к модулю. Установка такая же как и у всех, сложностей не должно возникнуть. Из зависимостей – только Jquery_update. После активации модуля в разделе «Конфигурация», у вас появится новый раздел – Settings Auto Upload Files.

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

Так же не забываем менять версию Jquery на 1.7. После выполнения всех действий, для выбранных типов материалов будет доступна автоматическая загрузка файлов (кнопку загрузить – я естественно скрыл, ибо необходимость в ней отпадает).

Ну вот в принципе и все. Как всегда на d.org он не появится, любители drush – отпадают.

Скачать модуль auto_upload (версия 1.0.2)

скачать модуль auto_upload 1.0.2

Скачать модуль auto_upload (версия 1.0.3)

скачать модуль auto_upload 1.0.3

drupalfly.ru

Drupal: Использование виджета AJAX загрузки файлов в своих формах

Я как-то упустил из виду, что помимо стандартного способа загрузки файлов в своих формах можно использовать AJAX виджет поля File:

Поле загрузки файловРезультат загрузки файла

Пример использования:

/** * Form builder. */ function mymodule_myform($form) { $form['file'] = array( '#type' => 'managed_file', '#title' => 'Картинка', '#description' => 'Выберите файл с расширением jpg, jpeg, png или gif', '#upload_location' => 'public://', '#upload_validators' => array( 'file_validate_is_image' => array(), 'file_validate_extensions' => array('png gif jpg jpeg'), 'file_validate_size' => array(1 * 1024 * 1024), ), '#default_value' => variable_get('mymodule_myfilefid'), );   $form['submit'] = array( '#type' => 'submit', '#value' => 'Отправить', );   return $form; }   /** * Form submit callback. */ function mymodule_myform_submit($form, &$form_state) { // Delete old file $old_file_fid = variable_get('mymodule_myfilefid'); if ($old_file_fid && $old_file_fid != $form_state['values']['file']) { $old_file = file_load($old_file_fid); file_usage_delete($old_file, 'mymodule'); file_delete($old_file); }   // Save new file $file = file_load($form_state['values']['file']); $file->status = FILE_STATUS_PERMANENT; file_save($file); file_usage_add($file, 'mymodule', 'mymodule', 0); variable_set('mymodule_myfilefid', $file->fid);   drupal_set_message('Картинка загружена'); }

Об удалении файла надо заботиться самостоятельно.

Документация.Модуль для загрузки картинок и отображения их превьюшек.

Написанное актуально для Drupal 7 Похожие записи

xandeadx.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта