Obter o diretório de caminho público


8

Quero salvar o arquivo programaticamente no caminho público e quero saber como posso entrar Public Directory pathno Drupal 8. No Drupal 7, usaria o código a seguir.

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

Qual é o equivalente no Drupal 8?


11
Ambas as funções ainda existem, drupal_realpath () está obsoleto. Se uma função estiver obsoleta, você quase sempre poderá observar sua implementação, pois normalmente chama o novo serviço / API. Você também pode sempre pesquisar os registros de mudança: drupal.org/list-changes/...
Berdir

11
Além disso, dois comentários relacionados: 1. Você está salvando no caminho padrão . Isso pode ser público, mas também pode ser outra coisa. Você pode apenas codificar public: // se você sempre quiser que seja em público. 2. A maioria das APIs pode lidar com public: // diretamente, por exemplo, qualquer ou quase qualquer arquivo * Funções PHP como file_put_contents (). Não há razão para convertê-lo você mesmo. De fato, alguns wrappers de fluxo, como por exemplo, uma implementação de armazenamento do Amazon S3, nem mesmo permitem isso.
Berdir

Respostas:


20

De acordo com a API realpath , você pode obtê-lo com:

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

Está faltando a parte file_default_scheme (), isso não faz nada. Mas isso ainda existe.
Berdir

Adicionado isso em uma edição.
Berdir

quando faço isso, recebo o diretório files-private. Como obtenho o diretório público
Diana

@ Diana, o código acima deve fornecer o caminho público. Para obter o private, você pode fazer isso: \ Drupal :: service ('file_system') -> realpath ("private: //");
NICKO

@NickO seu código não funciona para mim para o filesystem privada
Adrian Cid Almaguer

0

Caso você queira obter apenas "sites / default / files" ou "sites / your-multisite / files", você deve usar

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

// In your method.
print PublicStream::basePath();
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.