Ceci est une réponse partielle à votre question, car j'essaie de faire quelque chose de similaire mais avec du matériel vidéo.
Vous pouvez créer le nœud en tant que type de contenu, enregistrer le type de média dont vous avez besoin (consultez le code du média pour le mime / type et les fonctions que vous devez appeler). Vous devrez probablement définir un champ de ressource multimédia et utiliser le sélecteur de fichier multimédia dans le type de champ.
Le bit avec lequel je rencontre un problème est de faire en sorte que le navigateur l'affiche dans le nœud créé, sur lequel je travaille actuellement.
MISE À JOUR
Avoir un peu avancé. Une fois que vous avez enregistré le fichier multimédia (à l'aide de l'API multimédia), associez l' ID de fichier à l'ID de nœud à l'aide de file_usage_add () . Vous devrez probablement également associer le fichier dans le champ ajouté lorsque vous avez créé le champ d'actif multimédia.
Assurez-vous que votre php.ini autorise allow_url_fopen. Ensuite, vous pouvez utiliser quelque chose comme ça dans votre module:
Utilisez la fonction file_get_contents () de php
http://www.php.net/manual/en/function.file-get-contents.php
puis utilisez file_save_data () de l'API Drupal
http://api.drupal.org/api/drupal/includes--file.inc/function/file_save_data/7
Ensuite, vous devriez pouvoir l'appeler en utilisant et l'enregistrer sur un nœud, etc.
Éditer:
Comme indiqué dans les commentaires, vous pouvez utiliser la fonction system_retrieve_file Voir: https://api.drupal.org/api/drupal/modules!system!system.module/function/system_retrieve_file/7
la source
$file = system_retrieve_file('http://drupal.org/files/issues/druplicon_2.png', NULL, TRUE, FILE_EXISTS_RENAME);
Voici mon exemple de travail.
la source
system_retrieve_file()
puis l'enregistrez-vous en tant que fichier permanent dansFILE_STATUS_PERMANENT
? Je ne vois pas l'intérêt de votre fonction personnalisée?Ce n'est pas une réponse directe, mais assurez-vous que vous connaissez déjà le module Filefield Sources , qui le fait pour les images en général. Il pourrait répondre à vos besoins par lui-même; Je ne sais pas si c'est utile avec Media.
la source
En plus de la réponse @tecjam: vous devez utiliser drupal_http_request () au lieu de file_get_contents () , cela vous donne plus de contrôle sur le processus. Mais au total, cette méthode fonctionne comme prévu.
la source
la source
system_retrieve_file()
(ce qui fait tout pour vous et évite les problèmes avec les serveurs là où ilsfile_get_contents()
ne sont pas disponibles)?