Jak mogę uzyskać bezwzględną ścieżkę do pliku opartego na FID? Przepraszam, jeśli to powtórzenie, przeprowadziłem wyszukiwanie, ale nie mogłem znaleźć odpowiedzi.
Jak mogę uzyskać bezwzględną ścieżkę do pliku opartego na FID? Przepraszam, jeśli to powtórzenie, przeprowadziłem wyszukiwanie, ale nie mogłem znaleźć odpowiedzi.
Odpowiedzi:
Drupal 7
Jest to dwuczęściowy proces, wykorzystujący file_load()
ifile_create_url()
Najpierw musisz zmienić $ fid w identyfikator URI Drupala:
$file = file_load($fid);
$uri = $file->uri;
Teraz możesz zmienić to w adres URL
$url = file_create_url($uri);
file_create_url()
zawsze tworzy bezwzględny adres URL, albo przy użyciu $base_path
zdefiniowanego globalnie , albo przy użyciu tego, który Drupal odgadł podczas ładowania.
$file = \Drupal\file\Entity\File::load($file_id);
$uri = $file->getFileUri();
$url = \Drupal\Core\Url::fromUri(file_create_url($uri))->toString();
W Drupal 7 możesz także użyć zapytania MYSQL, jeśli nie chcesz ładować wszystkich pól pliku
$ fid = 1; // twój identyfikator pliku $ uri = db_select ('file_managed', 'f') -> warunek („f.fid”, $ fid, '= ”) -> pola („f”, tablica („uri”)) -> execute () -> fetchField (); echo file_create_url ($ uri);
Oba działają dla mnie w 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();