web-dev-qa-db-ja.com

fidに基づいてファイルの絶対パスを取得する方法

FIDに基づいてファイルの絶対パスを取得するにはどうすればよいですか?これが繰り返しの場合は申し訳ありませんが、検索を行いましたが、答えが見つかりませんでした。

13
Russ

Drupal 7

これは file_load()file_create_url() を使用する2つの部分からなるプロセスです。

まず、$ fidをDrupal URIに変換する必要があります。

_$file = file_load($fid);
$uri = $file->uri;
_

これをURLに変換できます

_$url = file_create_url($uri);
_

file_create_url()は常に、定義したグローバル_$base_path_を使用するか、Drupalをブートストラップ中に推測したものを使用して、絶対URLを作成します。

35
mpdonadio

Drupal 8

$file = \Drupal\file\Entity\File::load($file_id);
$uri = $file->getFileUri();
$url = \Drupal\Core\Url::fromUri(file_create_url($uri))->toString();
4
Kevin howbrook

Drupal 7では、ファイルのすべてのフィールドをロードしたくない場合は、MYSQLクエリを使用することもできます

 $ fid = 1; //ファイルID 
 $ uri = db_select( 'file_managed'、 'f')
-> condition( 'f.fid'、$ fid、 '=')
 -> fields( 'f'、array( 'uri'))
-> execute()-> fetchField(); 
 echo file_create_url($ uri); 
3
inizio

これらはどちらも私にとってDrupal 8:

// top of file
use Drupal\file\Entity\File;
use Drupal\Core\Url;

// load the file object from some file id
$file_object = File::load(123);

// way 1
$file_uri = $file_object->uri->value;
$file_url = file_create_url($file_uri);

// way 2
$file_uri = $file_object->getFileUri();
$file_url = Url::fromUri(file_create_url($file_uri))->toString();
1
ProGrammar