Bir dosyanın gerçek yolunu öğrenin


11

Drupal 8'de bir Excel okuma modülü oluşturuyorum. Bir dosyanın public gibi bir yoldan okumak için gerçek yolunu almak istiyorum: //2016-03/Places.xls.

Bir dosyanın gerçek yolunu bulmak için hangi işlevi çağırmalıyım?



4
Ne ile okumak için? Bu yol neredeyse her şeyle çalışır, örneğin file_get_contents ('public: // ...') gayet iyi çalışıyor.
Berdir

1
Drupal 8 açısından cevabı aldım, bu \ \ Drupal :: service ('file_system') -> realpath ('public: //2016-03/Places_2.xlsx') ``
Nisam

1
Bir yanıt olarak gönderin ve çözüm olarak kabul edin. Bu aynı soruya başkalarına yardımcı olacaktır.
Aram Boyajyan

1
Ben de benzer bir durum vardı, ama işleyebilir çünkü file_create_url ile sona erdi managed files (These are files that have either been uploaded by users or were generated automatically (for example through CSS aggregation))veshipped files (those outside of the files directory, which ship as part of Drupal core or contributed modules or themes)
usernameabc

Yanıtlar:


16

Sonunda çözümü Drupal kodunu kazarak aldım. File_system hizmetini
kullanarak gerçek yolu veya mutlak yolu elde edebiliriz .

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

4
Drupal üzerinden dosya yüklemek için bunlar var mı? Harici olarak barındırılıyorsa ne olur? FileSystem :: realpathThe use of this method is discouraged, because it does not work for remote URIs. Except in rare cases, URIs should not be manually resolved. belgeselinden bahsediliyor
usernameabc

13

@Nisam yanıtı doğruydu ama şimdi kullanımdan kaldırıldı: drupal_realpath işlevi

Kaldırıldı

Drupal 8.0.x-dev'de Drupal 9.0.0'dan önce kaldırılacaktır. \ Drupal \ Core \ File \ FileSystem :: realpath () kullanın.

Bu yüzden FileSystem :: realpath komutunu kullanmalısınız .

Misal:

$file = File::load($file_id);
$uri = $file->getFileUri();
$stream_wrapper_manager = \Drupal::service('stream_wrapper_manager')->getViaUri($uri);
$file_path = $stream_wrapper_manager->realpath();
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.