Je crée un module de lecture Excel dans Drupal 8. Je veux obtenir le vrai chemin d'un fichier pour le lire à partir d'un chemin comme public: //2016-03/Places.xls.
Quelle fonction dois-je appeler pour obtenir le vrai chemin d'un fichier?
Pour lire avec quoi? Ce chemin fonctionne avec presque tout, par exemple file_get_contents ('public: // ...') fonctionne très bien.
Berdir
1
J'ai eu la réponse en termes de drupal 8, c'est `\ Drupal :: service ('file_system') -> realpath ('public: //2016-03/Places_2.xlsx')`
Nisam
1
Postez-le comme réponse et acceptez-le comme solution. Cela aidera les autres avec la même question.
Aram Boyajyan
1
J'ai eu une situation similaire, mais j'ai fini par utiliser file_create_url car il peut gérer managed files (These are files that have either been uploaded by users or were generated automatically (for example through CSS aggregation))etshipped files (those outside of the files directory, which ship as part of Drupal core or contributed modules or themes)
usernameabc
Réponses:
16
Enfin, j'ai obtenu la solution en creusant le code Drupal.
Nous pouvons obtenir le chemin réel ou le chemin absolu en utilisant le service file_system .
sont-ils pour les fichiers téléchargés via Drupal? Que se passe-t-il s'ils sont hébergés en externe? 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.est mentionné la documentation pour FileSystem :: realpath
managed files (These are files that have either been uploaded by users or were generated automatically (for example through CSS aggregation))
etshipped files (those outside of the files directory, which ship as part of Drupal core or contributed modules or themes)
Réponses:
Enfin, j'ai obtenu la solution en creusant le code Drupal.
Nous pouvons obtenir le chemin réel ou le chemin absolu en utilisant le service file_system .
la source
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.
est mentionné la documentation pour FileSystem :: realpathLa réponse @Nisam était correcte mais maintenant elle est obsolète: fonction drupal_realpath
Vous devez donc utiliser FileSystem :: realpath .
Exemple:
la source