Ответы:
Drupal 7
Это процесс , из двух частей, с использованием file_load()
иfile_create_url()
Во-первых, вам нужно превратить $ fid в URI Drupal:
$file = file_load($fid);
$uri = $file->uri;
Теперь вы можете превратить это в URL
$url = file_create_url($uri);
file_create_url()
всегда создает абсолютный URL, либо используя глобальный, $base_path
который вы определили, либо используя тот, который Drupal угадал во время начальной загрузки.
В Drupal 7 вы также можете использовать запрос MYSQL, если вы не хотите загружать все поля файла
$ fid = 1; // идентификатор вашего файла $ uri = db_select ('file_managed', 'f') -> условие ('f.fid', $ fid, '=') -> поля ('f', массив ('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();
Они оба работают для меня в 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();