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

时间:2010-08-19 08:07:14

标签: drupal absolute-path

我在drupal / sites / default / files / images /.

中有一些图像

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

6 个答案:

答案 0 :(得分:12)

如果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";

所以如果文件在:

  • 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);

因此,假设您的网站位于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>

答案 1 :(得分:11)

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; 

答案 2 :(得分:4)

只需使用

$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,喜欢它,喜欢它

答案 3 :(得分:2)

在drupal 7中删除了

file_directory_path。如果你使用它,你将收到一个错误'调用未定义的函数'。尝试使用drupal_real_path或。您可以在此处找到已弃用的功能。 http://api.drupal.org/api/drupal/includes!file.inc/function/file_directory_path/6

答案 4 :(得分:1)

public://将为您提供公用文件夹的绝对路径

示例:访问

drupal/sites/default/files/images/

刚刚放

public://images/

答案 5 :(得分:0)

我尝试了标记的解决方案,发现我的目录是 “/sites/default/files/images/a.jpg”

但是当我把它作为img src写入我的节点时,它没有显示相关的图像。 除了我写的时候 “../sites/default/files/images/a.jpg” 它起作用了:))

因为在第一种情况下,Drupal试图找到该文件 “内容/位点/默认/文件/图像/ A.JPG”