как получить абсолютный путь к изображению в друпале?

У меня есть несколько изображений в drupal/sites/default/files/images/.

Как я могу получить абсолютный путь для изображения, такого как abc.jpg, помещенного в этот каталог?


person Mohit Jain    schedule 19.08.2010    source источник


Ответы (6)


Если Drupal находится в собственном домене (то есть http://example.com), абсолютный путь будет /sites/default/files/images/abc.jpg.

Если Drupal находится во вложенной папке (например, http://example.com/drupal), абсолютный путь будет /drupal/sites/default/files/images/abc.jpg.


Как я объяснил в своем ответе на тот же вопрос, который вы удалили, если вы пытаетесь программно сгенерировать путь (то есть вы не знаете, где находится каталог файлов), вам нужно использовать file_directory_path():

$image = file_directory_path() . "/images/abc.jpg";

Итак, если файлы находятся в:

  • сайты/по умолчанию/файлы: $image = "sites/default/files/images/abc.jpg".
  • sites/example.com/files: $image = "sites/example.com/files/images/abc.jpg".

Предполагая, что ваш предыдущий вопрос все еще актуален, вы должны использовать l() и theme_image() для создания ссылок и изображений соответственно в вашем модуле. Это обеспечит правильность сгенерированных путей для среды Drupal.

Используя ожидаемый результат, который вы предоставили ранее, решение будет таким:

// Images are in drupalroot/sites/default/files/images
$path = file_directory_path() . '/images/';

$detail_file = 'detail_1.jpg';
$image_file  = '1.jpg';

$img = theme('image', $path . $image_file);

$options = array(
  'attributes' => array(
    'title' => t('Sample title for image 1 lorem ipsum'),
  ),
  'html' => TRUE,
);
$output = l($img, $path . $detail_file, $options);

Итак, если ваш сайт находится в http://example.com/, вывод будет таким:

<a href="/sites/default/files/images/default_1.jpg" title="Sample title for image 1 lorem ipsum">
  <img src="/sites/default/files/images/1.jpg" height="<image height>" width="<image width>" />
</a>

Но если бы ваш сайт находился во вложенной папке (например, http://example.com/drupal), вывод был бы таким:

<a href="/drupal/sites/default/files/images/default_1.jpg" title="Sample title for image 1 lorem ipsum">
  <img src="/drupal/sites/default/files/images/1.jpg" height="<image height>" width="<image width>" />
</a>
person Community    schedule 19.08.2010

Для Друпал 7

$relativePath = "blabla/abc.jpg";

$uri = file_build_uri($relativePath);

//show public://blabla/abc.jpg
echo $uri; 

$url = file_create_url($uri);

//show http://www.yoursite.com/sites/default/files/blabla/abc.jpg
echo $url; 
person nxplace    schedule 30.11.2012

Просто используйте

$url_image = url('sites/default/files/'.file_uri_target($uri), array('absolute'=>true));

В этом случае у вас будет путь вида "http://www.mywebsite.com/sites/default/files/images/image.jpeg"

$uri — это внутренний путь, например «public://images/image.jpeg».

Это Drupal 7, наслаждайтесь им, любите его

person Rafa    schedule 03.02.2012

file_directory_path был удален в drupal 7. Если вы используете его, вы получите сообщение об ошибке «вызов неопределенной функции». Попробуйте использовать drupal_real_path или . Вы можете найти информацию об устаревшей функции здесь. http://api.drupal.org/api/drupal/includes!file.inc/function/file_directory_path/6

person rashidkhan    schedule 08.04.2013

public:// даст вам абсолютный путь к общей папке

Пример: получить доступ

drupal/sites/default/files/images/

просто поставь

public://images/
person warmth    schedule 09.11.2012

Я попробовал решение Марка и обнаружил, что мой каталог — «/sites/default/files/images/a.jpg».

Но когда я записываю это в свои узлы как img src, связанные изображения не отображаются. Кроме того, когда я написал «../sites/default/files/images/a.jpg», это сработало :)

Потому что в первом случае Drupal пытался найти файл в "content/sites/default/files/images/a.jpg"

person trante    schedule 07.12.2011