パブリックパスディレクトリを取得する


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
また、2つの関連するコメント:1 . デフォルトのパスに保存してます。それは公開されているかもしれませんが、それは他の何かかもしれません。public://を常に公開したい場合は、public://をハードコードするだけです。2.ほとんどのAPIはpublic://を直接処理できます。たとえば、file_put_contents()のような任意またはほぼすべてのfile * PHP関数です。自分で変換する理由はありません。実際、Amazon S3ストレージ実装などの一部のストリームラッパーは、それを許可しません。
Berdir

回答:


20

realpath APIによると、次の方法で取得できます。

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

file_default_scheme()の部分がありません。これは何もしません。しかし、それはまだ存在しています。
Berdir

それを編集に追加しました。
Berdir

これを行うと、files-privateディレクトリが取得されます。パブリックディレクトリの取得方法
Diana

@Diana上記のコードはパブリックパスを提供するはずです。プライベートを取得するには、次のようにします。\ Drupal :: service( 'file_system')-> realpath( "private://");
NickO

@NickOあなたのコードは私にとってプライベートファイルシステムパスでは機能しません
Adrian Cid Almaguer

0

「sites / default / files」または「sites / your-multisite / files」のみを取得する場合は、次を使用する必要があります

// Add to the top of the file.
use Drupal\Core\StreamWrapper\PublicStream;

// In your method.
print PublicStream::basePath();
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.