Сохранение внешнего img в Drupal, как если бы оно было загружено пользователем - PullRequest
0 голосов
/ 12 июля 2010

У меня есть сценарий, в котором пользователи могут загрузить изображение или видео (с YouTube или Vimeo), используя CCK через ImageField (Изображения) & Embedded Media Field (видео)

Мой сайт использует изображения ImageField для создания миниатюр в различных представлениях с действиями imagecache.

Youtube / vimeo обеспечивают захват видео, которое я хочу использовать в качестве «запасного варианта» для изображений.

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

Я знаком с правилами и действиями, а также с PHP. Любая основная схема того, что я должен делать, приветствуется.

Ответы [ 2 ]

1 голос
/ 13 июля 2010

В hook_nodeapi($op == 'presave', ...) вы можете проверить, было ли предоставлено изображение, и загрузить его с YouTube. Простым решением может быть использование drupal_http_request() для загрузки файла, а затем file_save_data() для записи его на диск. Но это загрузит содержимое файла в память, которая не нужна. Я думаю, что Curl можно использовать для прямой загрузки HTTP-файла на диск.

Загрузка файлов при сохранении узлов может быть проблемой производительности (поскольку это увеличивает время отклика). В этом случае вы можете отложить его до реализации hook_cron. Вы можете использовать Job Queue , чтобы легко ставить в очередь загрузку изображений для следующего cron. Если запуск во время работы cron в Drupal является проблемой, вы также можете попробовать использовать модуль Drupal Queue для отдельной загрузки.

1 голос
/ 13 июля 2010

Это будет частью пользовательского модуля. Я не знаю модуль, который обрабатывает это.

Например, модуль не так легко написать. Если он должен работать (каждый сайт должен работать, верно?), Он будет содержать какой-то механизм очереди или буфера, чтобы он мог обрабатывать и загружать удаленное видео в свое время. Может потребоваться улица кодирования, если вы хотите, чтобы видео было в одном согласованном формате. Потребовалось бы много отвратительных взломов, потому что, в конце концов, Youtube не позволяет скачивать их видео и сделает это как можно сложнее.

...