कैसे fid के आधार पर फ़ाइलों के लिए पूर्ण पथ पाने के लिए


13

मैं फिड के आधार पर किसी फ़ाइल के लिए पूर्ण पथ कैसे प्राप्त कर सकता हूं? क्षमा करें यदि यह एक दोहराव है, तो मैंने एक खोज की थी लेकिन इसका उत्तर खोजने में असमर्थ था।


मैं $ base_url + फ़ाइलों के लिए शेष पथ का उपयोग करके इसे प्राप्त करने का एक तरीका समझ सकता हूं + क्या यह सबसे अच्छा तरीका है?
रस

जवाबों:


35

द्रुपाल al

यह एक दो भाग प्रक्रिया है, उपयोग file_load()औरfile_create_url()

सबसे पहले, आपको Drupal URI में $ fid को चालू करना होगा:

$file = file_load($fid);
$uri = $file->uri;

अब, आप इसे URL में बदल सकते हैं

$url = file_create_url($uri);

file_create_url()हमेशा एक पूर्ण URL बनाता है, या तो $base_pathआपके द्वारा परिभाषित वैश्विक का उपयोग करके, या उस एक का उपयोग करके जिसे Drupal ने बूटस्ट्रैप के दौरान अनुमान लगाया था।


1
मुझे आश्चर्य है कि आपको फ़ाइल को केवल पथ प्राप्त करने के लिए लोड करना है, संसाधनों की बर्बादी की तरह लगता है।
रस

2
@Russ यह फ़ाइल ऑब्जेक्ट को लोड कर रहा है, न कि फ़ाइल को ही। आप uri प्राप्त करने के लिए db_query भी कर सकते हैं, लेकिन मैं यथासंभव API का उपयोग करने का प्रयास करता हूं।
mpdonadio

धन्यवाद, मुझे लगा कि, बस एक साफ कार्य होगा जो इसे एक चरण में वापस कर सकता है। हो सकता है कि कुछ ड्रुपल में विचार करें 8.
रस

1
आपके उदाहरण में आपके पास 'field_load ($ fid)' है, यह 'file_load ($ fid)' होना चाहिए।
स्टीव मुलविहिल

2
@SteveMulvihill वाह, अच्छा कैच। चार + साल और 33 वोट, और किसी ने उस पर ध्यान नहीं दिया।
mpdonadio


3

Drupal 7 में आप MYSQL क्वेरी का उपयोग भी कर सकते हैं, यदि आप फ़ाइल के सभी फ़ील्ड लोड नहीं करना चाहते हैं

  $ फिड = 1; // आपकी फ़ाइल आईडी
  $ uri = db_select ('file_managed', 'f')
    -> स्थिति ('f.fid', $ fid, '=')
    -> क्षेत्र ('f', सरणी ('uri'))
    -> पर अमल () -> fetchField ();
  echo file_create_url ($ uri);

1

ये दोनों ड्रुपल 8 में मेरे लिए काम कर रहे हैं:

// top of file
use Drupal\file\Entity\File;
use Drupal\Core\Url;

// load the file object from some file id
$file_object = File::load(123);

// way 1
$file_uri = $file_object->uri->value;
$file_url = file_create_url($file_uri);

// way 2
$file_uri = $file_object->getFileUri();
$file_url = Url::fromUri(file_create_url($file_uri))->toString();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.