किसी फ़ाइल का वास्तविक पथ प्राप्त करें


11

मैं Drupal 8. में एक एक्सेल रीडिंग मॉड्यूल बना रहा हूं। मैं इसे पब्लिक जैसे पथ से पढ़ने के लिए किसी फ़ाइल का वास्तविक पथ प्राप्त करना चाहता हूं: //2016-03/Places.xls।

किसी फ़ाइल का वास्तविक पथ प्राप्त करने के लिए मुझे क्या कार्य करना चाहिए?



4
किस चीज के साथ पढ़ने के लिए? वह रास्ता लगभग सब कुछ के साथ काम करता है, जैसे file_get_contents ('public: // ...') ठीक काम करता है।
बेर्डिर

1
मैं Drupal 8 के मामले में जवाब मिल गया यह `है \ Drupal :: सेवा ( 'file_system') -> realpath ( 'जनता: //2016-03/Places_2.xlsx')`
Nisam

1
इसे प्रतिक्रिया के रूप में पोस्ट करें और समाधान के रूप में स्वीकार करें। उसी सवाल के साथ दूसरों की मदद करेंगे।
अराम बोयाजयन

1
मेरे पास एक समान स्थिति थी, लेकिन फ़ाइल_क्रिएट_उर्ल के साथ समाप्त हो रही थी क्योंकि यह संभाल सकता है managed files (These are files that have either been uploaded by users or were generated automatically (for example through CSS aggregation))औरshipped files (those outside of the files directory, which ship as part of Drupal core or contributed modules or themes)
usernameabc

जवाबों:


16

अंत में मुझे Drupal कोड खोदकर हल मिल गया।
हम file_system सेवा का उपयोग करके वास्तविक पथ या पूर्ण पथ प्राप्त कर सकते हैं ।

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

4
क्या ये Drupal के माध्यम से अपलोड की गई फाइलें हैं? यदि वे बाहरी रूप से होस्ट किए जाते हैं तो क्या होता है? फाइलसिस्टम के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. लिए दस्तावेज का उल्लेख किया गया है :: realpath
usernameabc

13

@ निस्साम का उत्तर सही था लेकिन अब यह पदावनत कर दिया गया है: फ़ंक्शन drupal_realpath

पदावनत

Drupal 8.0.x-dev में, Drupal 9.0.0 से पहले हटा दिया जाएगा। \ Drupal \ Core \ File \ FileSystem का उपयोग करें :: realpath ()।

इसलिए आपको FileSystem :: realpath का उपयोग करना चाहिए ।

उदाहरण:

$file = File::load($file_id);
$uri = $file->getFileUri();
$stream_wrapper_manager = \Drupal::service('stream_wrapper_manager')->getViaUri($uri);
$file_path = $stream_wrapper_manager->realpath();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.