FIDに基づいてファイルの絶対パスを取得するにはどうすればよいですか?これが繰り返しの場合は申し訳ありませんが、検索を行いましたが、答えが見つかりませんでした。
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を作成します。
$file = \Drupal\file\Entity\File::load($file_id);
$uri = $file->getFileUri();
$url = \Drupal\Core\Url::fromUri(file_create_url($uri))->toString();
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);
これらはどちらも私にとって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();