मेरे पास एक फॉर्म है जहां अन्य जानकारी के बीच, कोई उपयोगकर्ता एक छवि अपलोड करेगा। मैं डेटाबेस पर छवि के पथ को संग्रहीत करना चाहता हूं और छवि को सर्वर पर public/img/
फ़ोल्डर में सहेजना चाहता हूं।लार्वेल 4 - फ़ाइल अपलोड करें
फ़ॉर्म का उपयोग करके खोला गया था: {{ Form::open(['route'=>'pizzas.store', 'files'=>true]) }}
ताकि यह फाइल पोस्ट करने में सक्षम हो।
<form method="POST" action="http://mypizza/pizzas"
accept-charset="UTF-8" enctype="multipart/form-data">
मैं अपने नियंत्रक को पोस्ट और अपेक्षा के अनुरूप फार्म से सभी डेटा प्राप्त कर सकते हैं: HTML मैं folowing है निरीक्षण। विधि फ़ाइल से निपटने के इस प्रकार है:
public function store() {
//TODO - Validation
$destinationPath = '';
$filename = '';
if (Input::hasFile('image')) {
$file = Input::file('image');
$destinationPath = '/img/';
$filename = str_random(6) . '_' . $file->getClientOriginalName();
$uploadSuccess = $file->move($destinationPath, $filename);
}
$pizza = Pizza::create(['name' => Input::get('name'),
'price' => Input::get('price'),
'ingredients' => Input::get('ingredients'),
'active' => Input::get('active'),
'path' => $destinationPath . $filename]);
if ($pizza) {
return Redirect::route('pizzas.show', $pizza->id);
}
//TODO - else
}
जब मैं एक फ़ाइल का चयन करें और फार्म जमा करें, सब कुछ काम करने के लिए, सिवाय इसके कि कोई फ़ाइल /img
फ़ोल्डर पर सहेजा गया है लगता है। डेटाबेस फ़ाइल पथ और नाम सही ढंग से पंजीकृत करता है।
if { ...}
ब्लॉक के बाद चल रहा है dd($uploadSuccess);
ठीक है, मैं निम्नलिखित मिल:
object(Symfony\Component\HttpFoundation\File\File)#220 (2) {
["pathName":"SplFileInfo":private]=> string(17) "/img\YZmLw7_2.jpg"
["fileName":"SplFileInfo":private]=> string(12) "YZmLw7_2.jpg" }
क्या मैं गलत कर रहा हूँ?
[Reflic] से जवाब देने के लिए इसके अलावा, यह डेटाबेस पर 'path' समायोजित करने के लिए आवश्यक हो जाएगा इस प्रकार है:' 'पथ '=>' img/'। $ filename]); –
सही है, मैं इसे भूल गया हूँ। – Reflic