En las últimas semanas estoy trabajando en la migración de un proyecto Drupal de la versión 6 a la 7. He tenido que adaptar datos y para ello realizar scripts de migración.
Os voy a mostrar el código que he utilizado para asociar una imagen a un nodo.
$file_path = ‘carpeta-origen/imagen.jpeg’;
$file = new stdClass;
$file->uri = $filepath;
$file->filemime = file_get_mimetype($filepath);
$file->uid = 1;
$file->status = 1;
$file = file_copy($file, 'public://fotos/');
$nodo->field_image[$node->language][0] = (array) $file;
Si analizamos el código, lo que hago es crear un objeto con el fichero, copiar el fichero en su ubicación de destino y por último asociar el objeto del fichero con el campo imagen.
La magia de todo el proceso la realiza la función file_copy
file_copy(stdClass $source, = NULL, $replace = FILE_EXISTS_RENAME)
Esta función copia un archivo a una nueva ubicación y añade el archivo en la base de datos de Drupal.
Espero que os sea util ;)