Відповіді:
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
вами глобальну , або використовуючи ту, про яку Друпал здогадався під час завантаження.
$file = \Drupal\file\Entity\File::load($file_id);
$uri = $file->getFileUri();
$url = \Drupal\Core\Url::fromUri(file_create_url($uri))->toString();
У Drupal 7 ви також можете використовувати запит MYSQL, якщо ви не хочете завантажувати всі поля файлу
$ fid = 1; // ваш ідентифікатор файлу $ uri = db_select ('file_managed', 'f') -> умова ('f.fid', $ fid, '=') -> поля ('f', масив ('uri')) -> Execute () -> fetchField (); echo file_create_url ($ uri);
Вони обидва працюють для мене в 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();