6

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

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

4

6 回答 6

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

因此,如果文件位于:

  • 网站/默认/文件$image = "sites/default/files/images/abc.jpg"
  • $image = "sites/example.com/files/images/abc.jpg"网站/example.com/files:。

假设您之前的问题仍然是用例,您应该在模块中分别使用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>
于 2010-08-19T08:21:13.063 回答
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; 
于 2012-11-30T01:01:18.137 回答
5

只需使用

$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,享受它,爱它

于 2012-02-03T07:55:47.443 回答
3

file_directory_path 已在 drupal 7 中删除。如果使用它,您将收到错误“调用未定义函数”。尝试使用 drupal_real_path 或 . 您可以在此处找到有关已弃用功能的信息。http://api.drupal.org/api/drupal/includes!file.inc/function/file_directory_path/6

于 2013-04-08T08:30:33.467 回答
2

public://会给你公用文件夹的绝对路径

示例:访问

drupal/sites/default/files/images/

就放

public://images/
于 2012-11-09T10:40:20.930 回答
1

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

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

因为在第一种情况下,Drupal 试图在“content/sites/default/files/images/a.jpg”中查找文件

于 2011-12-07T22:39:02.423 回答