Comment puis-je obtenir le chemin absolu d'un fichier basé sur la fidélité? Désolé si c'est une répétition, j'ai fait une recherche mais je n'ai pas pu trouver la réponse.
Drupal 7
Il s'agit d'un processus en deux parties, utilisant file_load()
et file_create_url()
Tout d'abord, vous devez transformer le $ fid en un Drupal URI:
$file = file_load($fid);
$uri = $file->uri;
Maintenant, vous pouvez transformer cela en URL
$url = file_create_url($uri);
file_create_url()
crée toujours une URL absolue, soit en utilisant le $base_path
global que vous avez défini, soit en utilisant celui que Drupal a deviné lors du bootstrap.
$file = \Drupal\file\Entity\File::load($file_id);
$uri = $file->getFileUri();
$url = \Drupal\Core\Url::fromUri(file_create_url($uri))->toString();
Dans Drupal 7 vous pouvez également utiliser la requête MYSQL, si vous ne voulez pas charger tous les champs du fichier
$ fid = 1; // votre ID de fichier $ uri = db_select ('file_managed', 'f') -> condition ('f.fid', $ fid, '=') -> champs ('f', tableau ('uri')) -> execute () -> fetchField (); echo file_create_url ($ uri);
Ceux-ci fonctionnent tous les deux pour moi dans 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();