Dapatkan jalur file yang sebenarnya


11

Saya membuat modul pembacaan Excel di Drupal 8. Saya ingin mendapatkan path asli file untuk membacanya dari path seperti publik: //2016-03/Places.xls.

Fungsi apa yang harus saya panggil untuk mendapatkan jalur file yang sebenarnya?



4
Untuk membaca dengan apa? Path itu berfungsi dengan hampir semua hal, misalnya file_get_contents ('publik: // ...') berfungsi dengan baik.
Berdir

1
Saya mendapat jawaban dalam hal drupal 8 itu adalah `\ Drupal :: service ('file_system') -> realpath ('publik: //2016-03/Places_2.xlsx')`
Nisam

1
Posting sebagai respons dan terima sebagai solusi. Itu akan membantu orang lain dengan pertanyaan yang sama.
Aram Boyajyan

1
Saya memiliki situasi yang sama, tetapi akhirnya pergi dengan file_create_url karena dapat menangani managed files (These are files that have either been uploaded by users or were generated automatically (for example through CSS aggregation))danshipped files (those outside of the files directory, which ship as part of Drupal core or contributed modules or themes)
usernameabc

Jawaban:


16

Akhirnya saya mendapat solusinya dengan menggali kode Drupal.
Kita bisa mendapatkan path nyata atau path absolut dengan menggunakan layanan file_system .

$absolute_path = \Drupal::service('file_system')->realpath('public://2016-03/Places_2.xlsx');

4
apakah ini untuk file yang diunggah melalui Drupal? Apa yang terjadi jika mereka di-host secara eksternal? The use of this method is discouraged, because it does not work for remote URIs. Except in rare cases, URIs should not be manually resolved.disebutkan dokumentasi untuk FileSystem :: realpath
usernameabc

13

@Nisam jawaban benar tetapi sekarang sudah usang: fungsi drupal_realpath

Usang

di Drupal 8.0.x-dev, akan dihapus sebelum Drupal 9.0.0. Gunakan \ Drupal \ Core \ File \ FileSystem :: realpath ().

Jadi, Anda harus menggunakan FileSystem :: realpath .

Contoh:

$file = File::load($file_id);
$uri = $file->getFileUri();
$stream_wrapper_manager = \Drupal::service('stream_wrapper_manager')->getViaUri($uri);
$file_path = $stream_wrapper_manager->realpath();
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.