如何获取Drupal 7默认文件上传目录?


21

我很难从drupal获取上载Directroy。是否有一些函数返回相对或绝对路径?


1
考虑使用包装器(public://private://等,以避免任何文件夹冲突。利用Drupal 7 :))
AyeshK

我知道这可以与image_style_url(uri)一起使用,但是我想将其作为变量传递给javascript以进行进一步的处理...尽管如此
Jurudocs

Answers:


24

此信息保存在Drupal的变量表中。使用variable_get函数获取此信息,并传入正确变量的名称:

  • 公用文件系统位置variable_get('file_public_path', conf_path() . '/files');
  • 专用文件系统位置variable_get('file_private_path');

如果要使用临时上载目录variable_get('file_temporary_path');如果要确定系统特定的上载目录,则不管实际的站点配置如何,都可以使用该file_directory_temp功能。

variable_get('file_public_path', conf_path() . '/files'); 如果站点管理员尚未修改或明确设置默认路径,它将为您拉出默认路径。


嗯,在我的情况下variable_get('file_public_path')是空的...我是否必须在一个钩子内调用它?
Jurudocs

1
@Jurudocs请改用此方法:variable_get('file_public_path', conf_path() . '/files');基本上,如果站点管理员未修改或明确设置默认路径,它将为您拉取默认路径。
2013年

@zhilevan检查您对该目录的文件权限。
Atomox

这仅给出相对路径,似乎比绝对路径有用。我喜欢drupal_realpath下面的解决方案。似乎更合法。
Alex Finnarn

11

要获取绝对文件系统路径,请使用drupal_realpath (Drupal API)而不是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

3

您还可以使用以下功能从相对uri获取有效的网址:

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

它们将路径返回到公用或专用文件夹。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.