web-dev-qa-db-ja.com

URIまたはファイル名からファイルのパブリックURLを取得する方法

ビューでphpを使用しています( Views PHP )ファイル参照からファイルの実際のURLを抽出しようとしています。ファイルのURIまたはファイル名を取得できます。 drupal関数を使用して、ファイルの実際のパブリックURLを取得できますか?.

$videouri = db_query('SELECT filename FROM `file_managed` WHERE fid = ' . $nidvideo)->fetchColumn();
//drupal_set_message('<pre>'. print_r($videourl, TRUE) .'</pre>');
$realpath = drupal_realpath($videouri);
$videourl = file_create_url($realpath);
return($videourl);
7
user379468

「パブリックURL」とはどういう意味ですか?

file_create_url() を使用すると、画像の絶対URLをそのまま使用できます。

_$videouri = db_query('SELECT uri FROM {file_managed} WHERE fid = :nidvideo', array(':nidvideo' => $nidvideo))->fetchColumn();
//drupal_set_message('<pre>'. print_r($videourl, TRUE) .'</pre>');
$videourl = file_create_url($videouri);
_

file_create_url()には有効なURIが必要です。 drupal_realpath()は、機能しないサーバーパスを示します。

SQLインジェクションの脆弱性を回避するために、データベースクエリも変更しました。

16
AyeshK

非推奨 になったため、drupal_realpath()を使用しないでください。

次のいずれかを使用できます。

1。 (file_stream_wrapper_get_instance_by_uri($uri)):

_$uri = $field[0]['uri'];  // file path as uri: 'public://';
if ($wrapper = file_stream_wrapper_get_instance_by_uri($uri)) {
  $path = $wrapper->realpath();
}
_


2。 (file_create_url($uri)):

_$uri = $node->field_video['und'][0]['uri'];  // file path as uri: 'public://';
$video_path = file_create_url($uri);
_
9
Ankit Agrawal
3
kenorb