सार्वजनिक निर्देशिका कैसे प्राप्त करें?


90

मैं यहाँ एक शुरुआत कर रहा हूँ, इसलिए मुझे इस सवाल के लिए क्षमा करना चाहिए, return File::put($path , $data);जिसका उपयोग मैं Laravel पर सार्वजनिक फ़ोल्डर में एक फ़ाइल बनाने के लिए कर रहा हूँ । मैंने नियंत्रक से कोड के इस टुकड़े का उपयोग किया मुझे यह जानने की आवश्यकता है कि $pathयह कैसे होना चाहिए।


क्या आप लारावेल 3 या लारवेल 4 का उपयोग कर रहे हैं?
लॉरेंस

जवाबों:


217

उपयोग public_path()

सन्दर्भ के लिए:

// Path to the project's root folder    
echo base_path();

// Path to the 'app' folder    
echo app_path();        

// Path to the 'public' folder    
echo public_path();

// Path to the 'storage' folder    
echo storage_path();

// Path to the 'storage/app' folder    
echo storage_path('app');

5
बस जोड़ने के public_path()लिए वास्तव में बहुत बेकार है - यह सिर्फ मानता है कि आपकी सभी सार्वजनिक फाइलें "सार्वजनिक" नामक एक निर्देशिका में हैं - भले ही वे नहीं हैं। उदाहरण के लिए, मुझे हमेशा डिफ़ॉल्ट "सार्वजनिक" निर्देशिका को "public_html" (मेरे सर्वर के अनुरूप) में बदलना होगा। लारवेल इसे मान्यता नहीं देता है। तो इस बात पर भरोसा न करें कि आपकी सार्वजनिक निर्देशिका वास्तव में क्या है, इसका कोई भी बुद्धिमान निर्धारण नहीं किया जा सकता है। $_SERVER['DOCUMENT_ROOT'];जब तक कोई सुझाव नहीं दे सकता कि मैं क्यों नहीं कर रहा हूं, मैं बस उपयोग कर रहा हूं ?
inigo

9
@inigo यह बेकार नहीं है, आप इसका उपयोग नहीं कर रहे हैं जैसा कि इसका उद्देश्य था। यदि आप जनता की निर्देशिका को बदलना चाहते हैं, तो आपको लारवेल को इसके बारे में बताना होगा: stackoverflow.com/questions/31758901/…
जस्टिन

18

आप अपने आवेदन का आधार पाने के लिए आधार_पथ () का उपयोग कर सकते हैं - और उसके बाद अपना सार्वजनिक फ़ोल्डर जोड़ सकते हैं:

$path = base_path().'/public';
return File::put($path , $data)

नोट: लोगों को अपने public_html में फ़ाइलों को अपलोड करने की अनुमति देने के बारे में बहुत सावधान रहें। यदि वे अपनी खुद की index.php फ़ाइल अपलोड करते हैं, तो वे आपकी साइट को संभाल लेंगे।


1
है base_path को लार्वा में परिभाषित किया गया है .. मैंने इसे इस्तेमाल किया है मुझे यह त्रुटि मिली अपरिभाषित फ़ंक्शन को कॉल करें base_path ()
Yasser Moussa

हाँ - यह helpers.php में परिभाषित किया गया है। मैंने अपने एल 4 ऐप पर परीक्षण किया - यह काम करता है। सुनिश्चित करें कि आप नवीनतम L4 बिल्ड चला रहे हैं - यह पहले के संस्करणों में नहीं रहा होगा।
लॉरेंस

11

मुझे पता है कि यह थोड़ी देर हो चुकी है, लेकिन यदि कोई और व्यक्ति इस खोज में आता है, तो आप अब public_path () का उपयोग कर सकते हैं; Laravel 4 में, यह सहायता फ़ोल्डर में हेल्पर.php फ़ाइल में जोड़ा गया है


6

अपने सार्वजनिक फ़ोल्डर पथ को अपने लारवेल कॉन्‍फ़िगरेशन से पुनर्प्राप्त करने का सबसे अच्छा तरीका है:

$myPublicFolder = public_path();
$savePath = $mypublicPath."enter_path_to_save";
$path = $savePath."filename.ext";
return File::put($path , $data);

सभी चर होने की कोई आवश्यकता नहीं है, लेकिन यह सिर्फ एक प्रदर्शनकारी उद्देश्य के लिए है।

आशा है कि यह मदद करता है, GRnGC

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.