Esta es una respuesta parcial a su pregunta, ya que estoy tratando de hacer algo similar pero con material de video.
Puede crear el nodo como un tipo de contenido, guardar el tipo de medio que necesita (eche un vistazo a través del código de medios para el mime / tipo relevante y las funciones que necesita llamar). Probablemente necesitará establecer un campo de activos multimedia y usar el selector de archivos multimedia en el tipo de campo.
Sin embargo, el problema con el que estoy teniendo problemas es hacer que el navegador lo muestre en el nodo creado, en el que estoy trabajando actualmente.
ACTUALIZAR
Habiendo llegado un poco más lejos. Una vez que haya guardado el archivo de medios (usando la API de medios), asocie la identificación del archivo con la ID del nodo usando file_usage_add () . Probablemente también deba asociar el archivo en el campo agregado cuando creó el campo de activo de medios.
Asegúrese de que su php.ini permita allow_url_fopen. Entonces puede usar algo como esto en su módulo:
Use la función php's file_get_contents ()
http://www.php.net/manual/en/function.file-get-contents.php
y luego use file_save_data () de la API de Drupal
http://api.drupal.org/api/drupal/includes--file.inc/function/file_save_data/7
Entonces debería poder llamarlo usando y guardarlo en un nodo, etc.
Editar:
Como se señaló en los comentarios, puede usar la función system_retrieve_file Consulte: https://api.drupal.org/api/drupal/modules!system!system.module/function/system_retrieve_file/7
fuente
$file = system_retrieve_file('http://drupal.org/files/issues/druplicon_2.png', NULL, TRUE, FILE_EXISTS_RENAME);
Aquí está mi ejemplo de trabajo.
fuente
system_retrieve_file()
y luego lo guarda como permanenteFILE_STATUS_PERMANENT
? ¿No veo el punto de su función personalizada?Esta no es una respuesta directa, pero asegúrese de que ya conoce el módulo de fuentes de Filefield , que hace esto para las imágenes en general. Puede satisfacer sus necesidades por sí solo; No sé si es útil con los medios.
fuente
Además de la respuesta @tecjam: debe usar drupal_http_request () en lugar de file_get_contents () , le da más control sobre el proceso. Pero en total este método funciona como se esperaba.
fuente
fuente
system_retrieve_file()
(que lo hace todo por usted y evita problemas con los servidores dondefile_get_contents()
no está disponible)?