cómo obtener la ruta absoluta para archivos basados en fid
13
¿Cómo puedo obtener la ruta absoluta para un archivo basado en el fid? Lo siento si esto es una repetición, hice una búsqueda pero no pude encontrar la respuesta.
Me sorprende que tenga que cargar el archivo solo para obtener la ruta, parece un desperdicio de recursos.
Russ
2
@Russ Está cargando el objeto de archivo, no el archivo en sí. También podría hacer un db_query para obtener la uri, pero trato de usar la API tanto como sea posible.
mpdonadio
Gracias, pensé que, solo pensé que habría una función limpia que podría devolverla en un solo paso. Tal vez algo a tener en cuenta en drupal 8.
Russ
1
En su ejemplo, tiene 'field_load ($ fid)', debería ser 'file_load ($ fid)'.
Steve Mulvihill
2
@SteveMulvihill Wow, buena captura. Más de cuatro años y 33 votos, y nadie se dio cuenta de eso.
mpdonadio
3
En Drupal 7 también puede usar la consulta MYSQL, si no desea cargar todos los campos del archivo
$ fid = 1; // su ID de archivo
$ uri = db_select ('file_managed', 'f')
-> condición ('f.fid', $ fid, '=')
-> campos ('f', matriz ('uri'))
-> execute () -> fetchField ();
echo file_create_url ($ uri);
// top of fileuseDrupal\file\Entity\File;useDrupal\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();
Respuestas:
Drupal 7
Este es un proceso de dos partes, usando
file_load()
yfile_create_url()
Primero, debe convertir el $ fid en un URI de Drupal:
Ahora, puedes convertir esto en una URL
file_create_url()
siempre crea una URL absoluta, ya sea usando el global$base_path
que ha definido o usando el que Drupal adivinó durante el arranque.fuente
En Drupal 7 también puede usar la consulta MYSQL, si no desea cargar todos los campos del archivo
fuente
Drupal 8
fuente
Ambos funcionan para mí en Drupal 8:
fuente