Как программно создать узел с файлом изображения, сохраненным из удаленного источника?


У меня есть URL-адрес удаленного изображения, сохраненный в переменной $image_url, и следующий код для программного создания узла:

  $node = new stdClass();
  $node->uid      = '1';
  $node->type     = 'article';
  node_object_prepare($node);
  $node->title    = $title;
  $node->status   = 1;
  $node->promote  = 0;
  $node->sticky   = 0;
  $node->language = 'ru';
  $node->body['und'][0]['value']   = $body;
  $node->body['und'][0]['format']  = 'filtered_html';
  node_save($node);

Вызов filefield_sources_save_file($image_url) в пользовательском модуле дает:

Предупреждение: размер файла(): ошибка статистики для http://www.remotesite.com/images/2014/11/1414790760.jpg в файле filefield_sources_save_file() (строка 451 /home/mysite/public_html/сайты/все/модули/файловые поля_источники/файловые поля_источники.модуль). Указанный файл 1414790760.jpg не удалось загрузить. Допускаются только файлы со следующими расширениями: jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp.

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

 3
Author: Krishna Mohan, 2014-11-01

1 answers

Наконец-то разобрались. Следующий код отлично работает:

$file = file_save_data(file_get_contents($image_url), file_default_scheme().'://tmp/'.basename($image_url));
$file->status = 1;
$node->field_image['und'][0] = (array)$file;

node_save($node);
 2
Author: Sasha, 2014-11-01 03:15:55