J'utilise php à partir d'une vue ( Vues PHP ) J'essaie d'extraire l'URL réelle d'un fichier à partir d'une référence de fichier. Je peux obtenir l'uri du fichier et/ou le nom du fichier. Quelle fonction drupal puis-je utiliser pour obtenir l'URL publique réelle du fichier?.
$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);
Qu'entendez-vous exactement par "URL publique"?
file_create_url () peut donner l'URL absolue à l'image hors de la boîte.
$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()
attend un uri valide. drupal_realpath()
donne le chemin du serveur qui ne fonctionne pas.
J'ai également modifié votre requête de base de données pour éviter toute vulnérabilité d'injection SQL.
N'utilisez pas drupal_realpath()
car il a été obsolète maintenant.
L'un des éléments suivants peut être utilisé:
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);
Vérifiez l'exemple suivant:
$url = file_stream_wrapper_get_instance_by_uri($filepath)->getExternalUrl()
Voir: API pour DrupalPublicStreamWrapper .
En relation: