如何在drupal中获取图像的绝对路径?

Moh*_*ain 6 drupal absolute-path

我在drupal/sites/default/files/images /中有一些图像.

如何获得放置在此目录中的像abc.jpg这样的图像的绝对路径?

小智 13

如果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";
Run Code Online (Sandbox Code Playgroud)

所以,如果文件在:

  • sites/default/files : $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);
Run Code Online (Sandbox Code Playgroud)

因此,假设您的网站位于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>
Run Code Online (Sandbox Code Playgroud)

但是如果您的站点位于子文件夹(例如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>
Run Code Online (Sandbox Code Playgroud)


小智 12

对于Drupal 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; 
Run Code Online (Sandbox Code Playgroud)


小智 5

只需使用

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

在这种情况下,您将拥有一个类似于“ http://www.mywebsite.com/sites/default/files/images/image.jpeg”的路径。

$ uri是内部路径,例如“ public://images/image.jpeg”

这是Drupal 7,喜欢它,喜欢它