Esta é uma resposta parcial à sua pergunta, pois estou tentando fazer algo semelhante, mas com material de vídeo.
Você pode criar o nó como um tipo de conteúdo, salvar o tipo de mídia que você precisa (consulte o código de mídia para ver o mime / tipo relevante e as funções que você precisa chamar). Você provavelmente precisará definir um campo de ativo multimídia e usar o seletor de arquivo de mídia no tipo de campo.
O problema com o qual estou tendo um problema é fazer com que o navegador o mostre no nó criado, no qual estou trabalhando atualmente.
ATUALIZAR
Tendo ido um pouco mais longe. Depois de salvar o arquivo de mídia (usando a API de mídia), associe o ID do arquivo ao ID do nó usando file_usage_add () . Você provavelmente também precisará associar o arquivo ao campo adicionado quando criou o campo de ativo de mídia.
Verifique se o seu php.ini permite allow_url_fopen. Então você pode usar algo parecido com isto em seu módulo:
Use a função file_get_contents () do php
http://www.php.net/manual/en/function.file-get-contents.php
e use file_save_data () da API do Drupal
http://api.drupal.org/api/drupal/includes--file.inc/function/file_save_data/7
Então você poderá chamá-lo usando e salvá-lo em um nó etc.
Editar:
Como apontado nos comentários, você pode usar a função system_retrieve_file Consulte: https://api.drupal.org/api/drupal/modules!system!system!system.module/function/system_retrieve_file/7
fonte
$file = system_retrieve_file('http://drupal.org/files/issues/druplicon_2.png', NULL, TRUE, FILE_EXISTS_RENAME);
Aqui está o meu exemplo de trabalho.
fonte
system_retrieve_file()
e salvando-o como permanenteFILE_STATUS_PERMANENT
? Não vejo o objetivo da sua função personalizada?Esta não é uma resposta direta, mas verifique se você já conhece o módulo Filefield Sources , que faz isso para imagens em geral. Pode atender às suas necessidades por conta própria; Não sei se é útil com a mídia.
fonte
Além da resposta do @tecjam: você deve usar drupal_http_request () em vez de file_get_contents () , ele oferece mais controle sobre o processo. Mas, no total, esse método funciona conforme o esperado.
fonte
fonte
system_retrieve_file()
(o que faz tudo para você e evita problemas com servidores ondefile_get_contents()
não estão disponíveis)?