我在drupal / sites / default / files / images /.
中有一些图像如何获得放置在此目录中的像abc.jpg这样的图像的绝对路径?
答案 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";
所以如果文件在:
$image = "sites/default/files/images/abc.jpg"
。 $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)
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”