Jak uzyskać domyślny katalog przesyłania plików Drupal 7?

21

Mam problem z uzyskaniem directroy'a przesyłania z drupala. Czy jest jakaś funkcja zwracająca ścieżkę względną lub bezwzględną?

Jurudoki
źródło
1
Zastanów się nad użyciem wrapperów ( public://, private://itp., Aby uniknąć konfliktów folderów. Skorzystaj z Drupal 7 :))
AyeshK
Wiem, że to działa z image_style_url (uri), ale chcę przekazać go do javascript jako zmienną do dalszego przetwarzania ... dziękuję jednak
Jurudocs

Odpowiedzi:

24

Informacje te są zapisywane w tabeli zmiennych Drupala. Użyj variable_getfunkcji, aby uzyskać te informacje, przekazując nazwę poprawnej zmiennej:

  • Lokalizacja publicznego systemu plików :variable_get('file_public_path', conf_path() . '/files');
  • Lokalizacja prywatnego systemu plików :variable_get('file_private_path');

Jeśli chcesz skorzystać z katalogu tymczasowego przesyłania variable_get('file_temporary_path');Jeśli chcesz określić katalog przesyłania specyficzny dla systemu, bez względu na faktyczną konfigurację witryny użyj tej file_directory_tempfunkcji.

variable_get('file_public_path', conf_path() . '/files'); pobierze dla ciebie domyślną ścieżkę na wypadek, gdyby nie została zmodyfikowana lub jawnie ustawiona przez administratora witryny.

9ee1
źródło
hmm w moim przypadku zmienna_get ('ścieżka_publiczna_pliku') jest pusta ... czy muszę ją wywoływać w ramach haka czy coś takiego?
Jurudocs
1
@Jurudocs Zamiast tego użyj tego: variable_get('file_public_path', conf_path() . '/files');Zasadniczo pobiera dla ciebie domyślną ścieżkę na wypadek, gdyby nie została zmodyfikowana lub jawnie ustawiona przez administratora strony.
9ee1
@zhilevan Sprawdź swoje uprawnienia do plików w tym katalogu.
Atomox
Daje to tylko ścieżkę względną, która wydaje się mniej przydatna niż ścieżka bezwzględna. Podoba mi się drupal_realpathponiższe rozwiązanie. Wydaje się bardziej uzasadniony.
Alex Finnarn,
11

Aby uzyskać bezwzględne ścieżki systemu plików, użyj drupal_realpath (Drupal API) zamiast 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
źródło
3

Możesz również użyć tych funkcji, aby uzyskać poprawny adres URL z względnego identyfikatora użytkownika:

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

Zwracają ścieżkę do folderów publicznych lub prywatnych.

wranvaud
źródło