Dies ist eine teilweise Antwort auf Ihre Frage, da ich versuche, etwas Ähnliches zu tun, aber mit Videomaterial.
Sie können den Knoten als Inhaltstyp erstellen und den gewünschten Medientyp speichern (sehen Sie sich den Mediencode für den entsprechenden Mime / Typ und die Funktionen an, die Sie aufrufen müssen). Möglicherweise müssen Sie ein Multimedia-Medienfeld festlegen und die Mediendateiauswahl im Feldtyp verwenden.
Das Problem, mit dem ich ein Problem habe, besteht darin, dass der Browser es auf dem erstellten Knoten anzeigt, an dem ich gerade arbeite.
AKTUALISIEREN
Etwas weiter gekommen. Wenn Sie die Mediendatei gespeichert haben (mithilfe der Medien-API), ordnen Sie die Datei-ID mit file_usage_add () der Knoten-ID zu . Möglicherweise müssen Sie die Datei auch dem Feld zuordnen, das Sie beim Erstellen des Medienassetfelds hinzugefügt haben.
Stellen Sie sicher, dass Ihre php.ini allow_url_fopen zulässt. Dann können Sie so etwas in Ihrem Modul verwenden:
Verwenden Sie die Funktion file_get_contents () von php
http://www.php.net/manual/en/function.file-get-contents.php
und dann Drupal API file_save_data () verwenden
http://api.drupal.org/api/drupal/includes--file.inc/function/file_save_data/7
Dann sollten Sie in der Lage sein, es mit aufzurufen und es auf einem Knoten usw. zu speichern.
Bearbeiten:
Wie in den Kommentaren erwähnt, können Sie die Funktion system_retrieve_file verwenden. Siehe: https://api.drupal.org/api/drupal/modules!system!system.module/function/system_retrieve_file/7
quelle
$file = system_retrieve_file('http://drupal.org/files/issues/druplicon_2.png', NULL, TRUE, FILE_EXISTS_RENAME);
Hier ist mein Arbeitsbeispiel.
quelle
system_retrieve_file()
und speichern sie dann als permanente Datei inFILE_STATUS_PERMANENT
? Ich verstehe den Sinn Ihrer benutzerdefinierten Funktion nicht?Dies ist keine direkte Antwort, aber stellen Sie sicher, dass Sie bereits über das Filefield Sources- Modul informiert sind , das dies für Bilder im Allgemeinen tut. Es könnte Ihre Bedürfnisse von selbst befriedigen; Ich weiß nicht, ob es für Medien nützlich ist.
quelle
Als Ergänzung zur @tecjam-Antwort: Sie sollten drupal_http_request () anstelle von file_get_contents () verwenden , um mehr Kontrolle über den Prozess zu erhalten. Insgesamt funktioniert diese Methode jedoch wie erwartet.
quelle
quelle
system_retrieve_file()
(was macht alles für Sie und vermeidet Probleme mit Servern, auf denenfile_get_contents()
keine verfügbar sind)?