2011-10-31 7 views
6

Tengo un tipo de contenido personalizado con 2 campos personalizados: archivo (archivo) y lista (estado).Drupal - crear entradas en el archivo gestionado

puedo establecer el valor de estado haciendo:

Quiero crear entradas para field_file y file_managed (tabla central) para un archivo que ya se encuentre en el servidor. Ya sé el tipo MIME, el tamaño y la ruta del archivo.

¿Cuál es la forma correcta de lograrlo?

+0

es en la tabla file_managed así? –

+0

No, el archivo ingresa al servidor a través de una aplicación de un tercero. La información sobre el archivo es accesible a través de un archivo XML que Drupal conoce. Por lo tanto, los datos de XML deben ponerse en file_managed AND field_file. – djdy

Respuesta

14

Me gustaría crear una instancia del objeto de archivo de forma manual y el uso de file_save() de cometerlo (utilizando un archivo de imagen como un ejemplo):

global $user; 
$file = new stdClass; 
$file->uid = $user->uid; 
$file->filename = 'image.png'; 
$file->uri = 'public://path/to/file/image.png'; 
$file->status = 1; 
$file->filemime = 'image/png'; 

file_save($file); 

A continuación, debe llamar file_usage_add() para que Drupal conocer su módulo tiene un interés personal en este archivo (utilizando el nid de su objeto $node):

file_usage_add($file, 'mymodule', 'node', $node->nid); 

Finalmente, puede agregar el archivo al nodo:

$node->field_file[$node->language][] = array(
    'fid' => $file->fid 
); 

Espero que ayude

+0

Gracias, eso ayuda mucho. – djdy

Cuestiones relacionadas