获取公共路径目录


8

我想以编程方式在公共路径中保存文件,我想知道如何Public Directory path在Drupal 8中获得文件。在Drupal 7中,我将使用以下代码。

drupal_realpath(file_default_scheme() . '://')

Drupal 8中的等效功能是什么?


1
这两个函数实际上仍然存在,不建议使用drupal_realpath()。如果不推荐使用某个功能,则几乎总是可以查看其实现,因为它通常会调用新的服务/ API。您也可以随时搜索更改记录:drupal.org/list-changes/…–
Berdir

1
另外,有两个相关的注释:1.您将保存默认路径。那可能是公开的,但也可能是其他的东西。如果您始终希望将其公开,则可以只对public://进行硬编码。2.大多数API可以直接处理public://,例如,任何或几乎任何file * PHP函数,例如file_put_contents()。没有理由自己进行转换。实际上,某些流包装程序(例如Amazon S3存储实现)甚至都不允许这样做。
贝尔迪尔

Answers:


20

根据realpath API,您可以通过以下方式获得它:

\Drupal::service('file_system')->realpath(file_default_scheme() . "://");

您缺少file_default_scheme()部分,此操作无济于事。但这仍然存在。
贝尔迪尔

在编辑中添加了它。
贝尔迪尔

当我这样做时,我得到files-private目录。我如何获得公共目录
Diana

@Diana上面的代码应为您提供公共路径。要获得私有,您可以执行以下操作:\ Drupal :: service('file_system')-> realpath(“ private://”);
NickO

@NickO对于私有文件系统路径,您的代码不适用于我
Adrian Cid Almaguer

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.