Obtenga la ruta real de un archivo


11

Estoy creando un módulo de lectura de Excel en Drupal 8. Quiero obtener la ruta real de un archivo para leerlo desde una ruta como public: //2016-03/Places.xls.

¿Qué función debo llamar para obtener la ruta real de un archivo?



44
¿Para leer con qué? Esa ruta funciona con casi todo, por ejemplo, file_get_contents ('public: // ...') funciona bien.
Berdir

1
Obtuve la respuesta en términos de drupal 8 es `\ Drupal :: service ('file_system') -> realpath ('public: //2016-03/Places_2.xlsx')`
Nisam

1
Publíquelo como respuesta y acéptelo como solución. Eso ayudará a otros con la misma pregunta.
Aram Boyajyan

1
Tuve una situación similar, pero terminé con file_create_url porque puede manejar managed files (These are files that have either been uploaded by users or were generated automatically (for example through CSS aggregation))yshipped files (those outside of the files directory, which ship as part of Drupal core or contributed modules or themes)
usernameabc

Respuestas:


16

Finalmente obtuve la solución cavando el código de Drupal.
Podemos obtener la ruta real o la ruta absoluta utilizando el servicio file_system .

$absolute_path = \Drupal::service('file_system')->realpath('public://2016-03/Places_2.xlsx');

44
son estos para subir archivos a través de Drupal? ¿Qué sucede si están alojados externamente? The use of this method is discouraged, because it does not work for remote URIs. Except in rare cases, URIs should not be manually resolved.se menciona la documentación para FileSystem :: realpath
usernameabc

13

La respuesta de @Nisam fue correcta pero ahora está en desuso: función drupal_realpath

Obsoleto

en Drupal 8.0.x-dev, se eliminará antes de Drupal 9.0.0. Use \ Drupal \ Core \ File \ FileSystem :: realpath ().

Entonces deberías usar FileSystem :: realpath .

Ejemplo:

$file = File::load($file_id);
$uri = $file->getFileUri();
$stream_wrapper_manager = \Drupal::service('stream_wrapper_manager')->getViaUri($uri);
$file_path = $stream_wrapper_manager->realpath();
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.