ビューで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);
「パブリック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インジェクションの脆弱性を回避するために、データベースクエリも変更しました。
非推奨 になったため、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);
_
次の例を確認してください。
$url = file_stream_wrapper_get_instance_by_uri($filepath)->getExternalUrl()
参照: DrupalPublicStreamWrapperのAPI 。
関連: