web-dev-qa-db-fra.com

comment obtenir le chemin absolu des fichiers basé sur fid

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.

13
Russ

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.

35
mpdonadio

Drupal 8

$file = \Drupal\file\Entity\File::load($file_id);
$uri = $file->getFileUri();
$url = \Drupal\Core\Url::fromUri(file_create_url($uri))->toString();
4
Kevin howbrook

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); 
3
inizio

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();
1
ProGrammar