Come posso ottenere il percorso assoluto per un file basato sul fid? Scusa se questa è una ripetizione, ho fatto una ricerca ma non sono riuscito a trovare la risposta.
Come posso ottenere il percorso assoluto per un file basato sul fid? Scusa se questa è una ripetizione, ho fatto una ricerca ma non sono riuscito a trovare la risposta.
Risposte:
Drupal 7
Questo è un processo in due parti, usando file_load()
efile_create_url()
Innanzitutto, devi trasformare $ fid in un URI Drupal:
$file = file_load($fid);
$uri = $file->uri;
Ora puoi trasformarlo in un URL
$url = file_create_url($uri);
file_create_url()
crea sempre un URL assoluto, sia usando il globale $base_path
che hai definito, sia usando quello che Drupal ha indovinato durante il bootstrap.
In Drupal 7 puoi anche usare la query MYSQL, se non vuoi caricare tutti i campi del file
$ fid = 1; // il tuo ID file $ uri = db_select ('file_managed', 'f') -> condizione ('f.fid', $ fid, '=') -> campi ('f', array ('uri')) -> execute () -> fetchField (); echo file_create_url ($ uri);
$file = \Drupal\file\Entity\File::load($file_id);
$uri = $file->getFileUri();
$url = \Drupal\Core\Url::fromUri(file_create_url($uri))->toString();
Entrambi funzionano per me in Drupal 8:
// top of file
use Drupal\file\Entity\File;
use Drupal\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();