2013-02-12 11 views
27

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

+0

आप Laravel 3 या Laravel 4 का उपयोग कर रहे हैं? – Laurence

+0

मैं संस्करण 4 –

उत्तर

87

उपयोग 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'); 
+0

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

9

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

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

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

+1

का उपयोग कर रहा हूं आधार_पथ को लार्वेल में परिभाषित किया गया है .. मैंने इसका उपयोग किया है मुझे यह त्रुटि मिली है अपरिभाषित फ़ंक्शन base_path() –

+0

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

10

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

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

, लेकिन यह सिर्फ एक प्रदर्शन-परक उद्देश्य के लिए है:

3

अपने Laravel config से अपने सार्वजनिक फ़ोल्डर पथ को पुनः प्राप्त करने का सबसे अच्छा तरीका कार्य है।

आशा इस मदद करता है, GRnGC

संबंधित मुद्दे