Comment obtenir le répertoire de téléchargement de fichiers par défaut de Drupal 7?

21

J'ai du mal à obtenir le téléchargement direct de drupal. Existe-t-il une fonction renvoyant le chemin relatif ou absolu?

Jurudocs
la source
1
Pensez à utiliser des emballages ( public://, private://, etc. pour éviter tout conflit de dossier Profitez de Drupal 7 :).)
AyeshK
Je sais que cela fonctionne avec image_style_url (uri) mais je veux le passer à javascript en tant que variable pour un traitement
ultérieur

Réponses:

24

Ces informations sont enregistrées dans le tableau des variables de Drupal. Utilisez la variable_getfonction pour obtenir ces informations en transmettant le nom de la variable correcte:

  • Emplacement du système de fichiers public :variable_get('file_public_path', conf_path() . '/files');
  • Emplacement du système de fichiers privé :variable_get('file_private_path');

Si vous souhaitez utiliser le répertoire de téléchargement temporaire variable_get('file_temporary_path');Si vous souhaitez déterminer le répertoire de téléchargement spécifique au système, quelle que soit la configuration réelle du site, utilisez la file_directory_tempfonction.

variable_get('file_public_path', conf_path() . '/files'); tirera le chemin par défaut pour vous au cas où il n'aurait pas été modifié ou explicitement défini par l'administrateur du site.

9ee1
la source
hmm dans mon cas variable_get ('file_public_path') est vide ... dois-je l'appeler dans un hook ou plus?
Jurudocs
1
@Jurudocs Utilisez ceci à la place: variable_get('file_public_path', conf_path() . '/files');Fondamentalement, il tire le chemin par défaut pour vous au cas où il n'aurait pas été modifié ou explicitement défini par l'administrateur du site.
9ee1
@zhilevan Vérifiez vos autorisations de fichier sur ce répertoire.
Atomox
Cela ne donne que le chemin relatif qui semble moins utile que le chemin absolu. J'aime la drupal_realpathsolution ci-dessous. Semble plus légitime.
Alex Finnarn
11

Pour obtenir les chemins absolus du système de fichiers, utilisez drupal_realpath (API Drupal) au lieu de file_create_url:

drupal_realpath('public://'); 
// returns e.g. /var/www/drupal/sites/default/files

drupal_realpath('private://');
// returns e.g. /var/www/drupal/sites/default/files_private
Michael Bolli
la source
3

Vous pouvez également utiliser ces fonctions pour obtenir une URL valide à partir d'un uri relatif:

file_create_url('public://');
file_create_url('private://');

Ils renvoient le chemin vers les dossiers publics ou privés.

wranvaud
la source