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".
  • 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>
于 2010-08-19T08:21:13.063 に答える
12

Drupal7の場合

$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 で削除されました。これを使用すると、「call to undefined function」というエラーが発生します。drupal_real_path または . 非推奨の機能については、こちらを参照してください。http://api.drupal.org/api/drupal/includes!file.inc/function/file_directory_path/6

于 2013-04-08T08:30:33.467 に答える