wie man den absoluten Pfad für Dateien basierend auf fid erhält
13
Wie kann ich den absoluten Pfad für eine Datei basierend auf der FID erhalten? Es tut mir leid, wenn dies eine Wiederholung ist, ich habe eine Suche durchgeführt, konnte jedoch keine Antwort finden.
Ich hätte vielleicht einen Weg gefunden, wie ich es mit der $ base_url + dem verbleibenden Pfad zu Dateien + uri bekommen kann. Ist dies der beste Weg?
Zuerst müssen Sie das $ fid in einen Drupal-URI verwandeln:
$file = file_load($fid);
$uri = $file->uri;
Jetzt können Sie daraus eine URL machen
$url = file_create_url($uri);
file_create_url()Erstellt immer eine absolute URL, entweder mit der von $base_pathIhnen definierten globalen oder mit der, die Drupal während des Bootstraps erraten hat.
Ich bin überrascht, dass Sie die Datei laden müssen, nur um den Pfad zu erhalten, scheint eine Verschwendung von Ressourcen.
Russ
2
@Russ Es wird das Dateiobjekt geladen, nicht die Datei selbst. Sie könnten auch eine db_query ausführen, um die URI abzurufen, aber ich versuche, die API so oft wie möglich zu verwenden.
mpdonadio
Vielen Dank, dachte ich, es gäbe eine saubere Funktion, die es in einem Schritt zurückgeben könnte. Vielleicht etwas zu beachten in Drupal 8.
Russ
1
In Ihrem Beispiel haben Sie 'field_load ($ fid)', es sollte 'file_load ($ fid)' sein.
Steve Mulvihill
2
@SteveMulvihill Wow, schöner Fang. Vier + Jahre und 33 Stimmen, und niemand hat das bemerkt.
mpdonadio
3
In Drupal 7 können Sie auch MYSQL-Abfragen verwenden, wenn Sie nicht alle Felder der Datei laden möchten
// top of fileuseDrupal\file\Entity\File;useDrupal\Core\Url;// load the file object from some file id
$file_object =File::load(123);// way 1
$file_uri = $file_object->uri->value;
$file_url = file_create_url($file_uri);// way 2
$file_uri = $file_object->getFileUri();
$file_url =Url::fromUri(file_create_url($file_uri))->toString();
Antworten:
Drupal 7
Dies ist ein zweiteiliger Prozess mit
file_load()
undfile_create_url()
Zuerst müssen Sie das $ fid in einen Drupal-URI verwandeln:
Jetzt können Sie daraus eine URL machen
file_create_url()
Erstellt immer eine absolute URL, entweder mit der von$base_path
Ihnen definierten globalen oder mit der, die Drupal während des Bootstraps erraten hat.quelle
In Drupal 7 können Sie auch MYSQL-Abfragen verwenden, wenn Sie nicht alle Felder der Datei laden möchten
quelle
Drupal 8
quelle
Diese beiden arbeiten für mich in Drupal 8:
quelle