Купить этот сайт

Мультизагрузка изображений в друпале.

10 Jun, 2014

Multiupload Imagefield Widget

Этот модуль добавляет к стандартной форме загрузки файлов (и изображений) возможность множественной загрузки посредством html5 file api. Соответственно, работает только в новых браузерах. На самой страничке проекта по поводу поддержки браузеров сказано следующее: «Работает в Firefox 3.6+, Chromium 10+, Opera 11.01+. В IE10 должен работать, но не тестировалось.» У меня ie10 тоже под рукой не оказалось, а проверялось в последнем firefox (29.0) на локальном сервере.

Установка простая: качаем и включаем модули Multiupload Imagefield Widget (для изображений) и Multiupload Filefield Widget (для файлов). Для загрузки изображений нужны оба. Добавляем к типу контента поле «file» или «image», если их еще нет, тип виджета выбираем «Multiupload». На этом установка готова.
Multiupload imagefiels widget

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

Общий размер и количество файлов ограничены следующими настройками в php.ini: post_max_size, upload_max_filesize (общий размер загружаемых за один раз файлов не может превышать этот лимит) и max_file_uploads (ограничивает количество загружаемых за раз файлов). Я сделал себе такие настройки, чтобы точно хватило:

; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 900M

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 900M

; Maximum number of files that can be uploaded via a single request
max_file_uploads = 900

После чего приступил к тестированию на максимальное количество изображений, которое смогу закачать за раз.

10 и 50 изображений закачалось совершенно без проблем. При сотне браузер немного задумался, но тоже успешно переварил. На 200 (~200mb) изображениях браузер заметно тупил, но в итоге все закачалось и сохранилось. Видимо, больше в данном случае и не надо, ибо при таком количестве файлов нужен другой административный интерфейс: с пагинацией, поиском, сортировкой по разным параметрам и т. д., иначе получается жутко неудобная простыня. К тому при отсутствии прогрессбара не ясно, на какой стадии процесс, может там вообще все зависло.

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

Plup

Страница проекта: https://drupal.org/project/plup

Очень хороший модуль, но к сожалению, не развивается, застыв на версии «альфа». При этом вполне работает и я рекомендую его к использованию.
Plup

Использует в качестве библиотеки загрузчик Plupload. Для установки качаем сам модуль, library api и последнюю версию загрузчика plupload ветки 1.х, на данный момент это версия 1.5.8 (2.х не поддерживаетя).

Загрузчик распаковываем в директорию «sites/all/libraries», путь к основному файлу должен получиться таким: «/sites/all/libraries/plupload/js/plupload.js», включаем модули plup и library api, добавляем к типу контента поле типа «image» и выбираем виджет «Plupload».
Plup

Модуль подходит для управления большим числом фоток, имеет компактный интерфейс, drag'n'drop, изображения сортируются перетаскиванием. Кароче, все круто и удобно, работает быстро. У меня успешно закачалось и сохранилось 250 фоток за раз общим объем 260МБ, причем часть из них с кириллическими именами (при включенном модуле transliteration).

Filefield Sources + Plupload Integration

Еще один вариант использования загрузчика plupload.
Качаем модули FileField Sources, FileField Sources Plupload и Plupload integration, а также размещаем сам загрузчик версии 1.5.8 в директории «sites/all/libraries».

В настройках поля в разделе «File sources» отмечаем «Advanced upload widget (Plupload)».
file field sources
После этого при загрузке файлов будет доступно два варианта: обычный и мультизагрузчик со всякими плюшками: показывается общее количество файлов, объем и прогресс закачки.
file field sources

У меня успешно загрузилось 200 фотографий за раз общим объемом 250МБ, но большее количество модуль не потянул: возникли проблемы с сохранением ноды.

Кстати, Plupload Integration можно использовать и отдельно: он добавляет возможность мультизагрузки к куче других модулей, список которых можно посмотреть на странице проекта.

Другие модули

Полный список модулей для мультизагрузки файлов, в том числе для шестого друпала можно посмотреть на странице https://groups.drupal.org/node/155764

Теги: 

2 комментария

by Алексей on пн, 16/06/2014 - 20:41

У меня почему-то plupload не работает(( Пишет HTTP Error...

by Polo on пт, 06/03/2015 - 21:31

Хорошая статья! Спасибо.

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

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.