इमेज और फाइल कैसे अपलोड करें Codeइग्नाइटर (उदाहरण सहित)
⚡ स्मार्ट सारांश
CodeIgniter File Upload, HTML फॉर्म से छवियों और दस्तावेज़ों को सर्वर डायरेक्टरी में स्थानांतरित करने के लिए अंतर्निहित अपलोड लाइब्रेरी का उपयोग करता है। यह उदाहरण एक अपलोड फॉर्म, प्रकार और आकार को मान्य करने वाला एक कंट्रोलर और अपलोड की पुष्टि करने वाला एक परिणाम पृष्ठ बनाता है।

Codeइग्निटर फ़ाइल अपलोड
अधिकांश वेब अनुप्रयोगों के लिए फ़ाइल प्रबंधन आवश्यक है। यदि आप डेवलपर हैं...ping यदि आप किसी कंटेंट मैनेजमेंट सिस्टम पर काम कर रहे हैं, तो आपको इमेज, वर्ड डॉक्यूमेंट, पीडीएफ रिपोर्ट आदि अपलोड करने में सक्षम होना होगा। यदि आप किसी सदस्यता साइट पर काम कर रहे हैं, तो आपको लोगों को अपनी प्रोफाइल इमेज अपलोड करने की सुविधा प्रदान करनी पड़ सकती है। CodeIgniter File Uploading क्लास की मदद से हम उपरोक्त सभी कार्य आसानी से कर सकते हैं।
इस ट्यूटोरियल में, हम देखेंगे कि फ़ाइलों को लोड करने के लिए फ़ाइल अपलोड लाइब्रेरी का उपयोग कैसे करें।
छवियों को अपलोड करना Codeआग लगनेवाला
फ़ाइल अपलोड करना Codeआग लगनेवाला इसके दो मुख्य भाग हैं: फ्रंटएंड और बैकएंड। फ्रंटएंड को HTML फॉर्म द्वारा नियंत्रित किया जाता है जो फ़ाइल इनपुट प्रकार का उपयोग करता है। बैकएंड पर, फ़ाइल अपलोड लाइब्रेरी फॉर्म से सबमिट किए गए इनपुट को प्रोसेस करती है और उसे अपलोड डायरेक्टरी में लिखती है।
आइए इनपुट फॉर्म से शुरू करते हैं।
application/views डायरेक्टरी में files नाम की एक नई डायरेक्टरी बनाएं।
application/views/files में निम्न फ़ाइलें जोड़ें
- upload_form.php - इस दृश्य में HTML फ़ॉर्म होता है जिसमें फ़ाइल का इनपुट प्रकार होता है और चयनित फ़ाइल को प्रसंस्करण के लिए सर्वर पर सबमिट करता है
- upload_result.php – यह व्यू अपलोड की गई इमेज के परिणाम प्रदर्शित करता है, जिसमें एक लिंक भी शामिल है जिस पर क्लिक करके हम परिणाम देख सकते हैं।
upload_form.php में निम्न कोड जोड़ें
<!DOCTYPE html> <html> <head> <title>CodeIgniter Image Upload</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div> <h3>Select an image from your computer and upload it to the cloud</h3> <?php if (isset($error)){ echo $error; } ?> <form method="post" action="<?=base_url(0)?>" enctype="multipart/form-data"> <input type="file" id="profile_image" name="profile_image" size="33" /> <input type="submit" value="Upload Image" /> </form> </div> </body> </html>
यहाँ,
- if (isset($error)){…} यह जांचता है कि त्रुटि चर सेट किया गया है या नहीं। यदि परिणाम सही है, तो अपलोड लाइब्रेरी द्वारा लौटाई गई त्रुटि उपयोगकर्ता को प्रदर्शित की जाती है।
- इस प्रकार की फ़ाइल उपयोगकर्ता को अपने कंप्यूटर पर जाकर अपलोड करने के लिए एक फ़ाइल चुनने की अनुमति देती है।
upload_result.php में निम्नलिखित कोड जोड़ें।
<!DOCTYPE html> <html> <head> <title>Image Upload Results</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div> <h3>Congratulations, the image has successfully been uploaded</h3> <p>Click here to view the image you just uploaded <?=anchor('images/'.$image_metadata['file_name'], 'View My Image!')?> </p> <p> <?php echo anchor('upload-image', 'Go back to Image Upload'); ?> </p> </div> </body> </html>
यहाँ,
- यह एंकर हेल्पर का उपयोग करके इमेज डायरेक्टरी में नई अपलोड की गई फ़ाइल का लिंक बनाता है। फ़ाइल के सफलतापूर्वक अपलोड होने पर व्यू को भेजे गए इमेज मेटाडेटा से नाम प्राप्त किया जाता है।
अब आइए एक कंट्रोलर बनाते हैं जो हमारी इमेज अपलोडिंग पर प्रतिक्रिया देगा।
एप्लिकेशन/कंट्रोलर्स में एक नई फ़ाइल ImageUploadController.php जोड़ें
ImageUploadController.php में निम्न कोड जोड़ें
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class ImageUploadController extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('url', 'form'); } public function index() { $this->load->view('files/upload_form'); } public function store() { $config['upload_path'] = './images/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = 2000; $config['max_width'] = 1500; $config['max_height'] = 1500; $this->load->library('upload', $config); if (!$this->upload->do_upload('profile_image')) { $error = array('error' => $this->upload->display_errors()); $this->load->view('files/upload_form', $error); } else { $data = array('image_metadata' => $this->upload->data()); $this->load->view('files/upload_result', $data); } } }
यहाँ,
- class ImageUploadController extends CI_Controller {…} हमारे नियंत्रक वर्ग को परिभाषित करता है और आधार नियंत्रक CI_Controller को विस्तारित करता है
- सार्वजनिक फ़ंक्शन __construct() {…} पैरेंट कंस्ट्रक्टर विधि को आरंभ करता है और URL और फ़ॉर्म हेल्पर्स को लोड करता है
- सार्वजनिक फ़ंक्शन इंडेक्स() {…} इंडेक्स विधि को परिभाषित करता है जिसका उपयोग छवि अपलोड फ़ॉर्म को प्रदर्शित करने के लिए किया जाता है
- public function store() {…} उस विधि को परिभाषित करता है जो छवि को अपलोड करेगा और उसे वेब अनुप्रयोग सर्वर पर संग्रहीत करेगा।
- $config['upload_path'] = './images/'; वह निर्देशिका सेट करता है जहां छवियों को अपलोड किया जाना चाहिए
- $config['allowed_types'] = 'gif|jpg|png'; स्वीकार्य फ़ाइल एक्सटेंशन को परिभाषित करता है। सुरक्षा कारणों से यह महत्वपूर्ण है। अनुमत प्रकार यह सुनिश्चित करते हैं कि केवल छवियां ही अपलोड हों और PHP जैसी अन्य फ़ाइल प्रकार अपलोड न हों, क्योंकि इनसे सर्वर को नुकसान पहुंचने का खतरा होता है।
- $config['max_size'] = 2000; किलोबाइट में अधिकतम फ़ाइल आकार निर्धारित करता है। हमारे उदाहरण में, अपलोड की जा सकने वाली अधिकतम फ़ाइल 2,000 किलोबाइट (लगभग 2MB) है। यदि उपयोगकर्ता 2,000 किलोबाइट से बड़ी फ़ाइल अपलोड करने का प्रयास करता है, तो छवि अपलोड नहीं हो पाएगी और लाइब्रेरी एक त्रुटि संदेश प्रदर्शित करेगी।
- $config['max_width'] = 1500; यह इमेज की अधिकतम चौड़ाई निर्धारित करता है, जो हमारे मामले में 1,500 px है। इससे अधिक चौड़ाई होने पर त्रुटि उत्पन्न होती है।
- $config['max_height'] = 1500; अधिकतम स्वीकार्य ऊंचाई को परिभाषित करता है।
- $this->load->library('upload', $config); अपलोड लाइब्रेरी को लोड करता है और इसे $config सरणी के साथ आरंभ करता है जिसे हमने ऊपर परिभाषित किया है।
- यदि (!$this->upload->do_upload('profile_image')) {…} सबमिट की गई छवि को अपलोड करने का प्रयास करता है, जिसका नाम हमारे मामले में profile_image है।
- $error = array('error' => $this->upload->display_errors()); अपलोड विफल होने पर त्रुटि संदेश सेट करता है
- $this->load->view('files/upload_form', $error); फ़ाइल अपलोड फ़ॉर्म लोड करता है और अपलोड लाइब्रेरी से लौटाए गए त्रुटि संदेश को प्रदर्शित करता है
- $data = array('image_metadata' => $this->upload->data()); यदि अपलोड सफल रहा है तो छवि मेटाडेटा सेट करता है
- $this->load->view('files/upload_result', $data); सफलतापूर्वक अपलोड किए गए दृश्य को लोड करता है और अपलोड की गई फ़ाइल मेटाडेटा को पास करता है।
कंट्रोलर का काम यहीं समाप्त होता है। अब आइए वह डायरेक्टरी बनाते हैं जहाँ हमारी इमेज अपलोड की जाएंगी। अपने एप्लिकेशन की रूट डायरेक्टरी में "इमेजेज" नाम की एक नई डायरेक्टरी बनाएं।
अंत में, हम अपनी routes.php फ़ाइल में दो रूट जोड़ेंगे जो फॉर्म प्रदर्शित करेंगे और परिणाम दिखाएंगे।
application/config/routes.php फ़ाइल खोलें और उसमें निम्नलिखित रूट जोड़ें।
$route['upload-image'] = 'imageuploadcontroller'; $route['store-image'] = 'imageuploadcontroller/store';
यहाँ,
- $route['upload-image'] = 'imageuploadcontroller'; परिभाषित करता है URL upload-image जो ImageUploadController के index मेथड को कॉल करता है
- $route['store-image'] = 'imageuploadcontroller/store'; परिभाषित करता है URL store-image एक ऐसा टूल है जो चयनित उपयोगकर्ता फ़ाइल को स्वीकार करता है और उसे सर्वर पर अपलोड करता है।
सामान्य समस्याओं को कैसे ठीक करें Codeइग्नाइटर फ़ाइल अपलोड त्रुटियाँ
अपलोड लाइब्रेरी से अपलोड विफलताओं के संबंध में अधिकतर मामलों में एक स्पष्ट संदेश प्राप्त होता है। नीचे दी गई सूची में सामान्य त्रुटियों और उनके समाधानों का विवरण दिया गया है।
- आप जिस प्रकार की फ़ाइल अपलोड करने का प्रयास कर रहे हैं, वह अनुमत नहीं है: allowed_types कॉन्फ़िगरेशन में छूटे हुए एक्सटेंशन को जोड़ें, उदाहरण के लिए 'gif|jpg|png|pdf'।
- आप जिस फ़ाइल को अपलोड करने का प्रयास कर रहे हैं, वह अनुमत आकार से बड़ी है: max_size को बढ़ाएं, और php.ini में upload_max_filesize और post_max_size पर्याप्त रूप से बड़े हैं या नहीं, इसकी पुष्टि करें।
- अपलोड पथ मान्य प्रतीत नहीं होता है: upload_path डायरेक्टरी बनाएं और सुनिश्चित करें कि वेब सर्वर के पास उस पर लिखने की अनुमति हो।
- आपने अपलोड करने के लिए कोई फ़ाइल नहीं चुनी: जांचें कि इनपुट नाम do_upload() तर्क से मेल खाता है और फॉर्म enctype multipart/form-data का उपयोग करता है।
एप्लिकेशन का परीक्षण
चलिए बिल्ट-इन PHP सर्वर शुरू करते हैं।
टर्मिनल या कमांड लाइन खोलें और अपने एप्लिकेशन के रूट फ़ोल्डर में जाएं। मेरे मामले में, रूट फ़ोल्डर C:\Sites\ci-app ड्राइव में स्थित है।
cd C:\Sites\ci-app
निम्न कमांड का उपयोग करके सर्वर प्रारंभ करें
php -S localhost:3000
निम्नलिखित को लोड करें URL अपने वेब ब्राउज़र में: http://localhost:3000/upload-image
आपको निम्नलिखित परिणाम देखने को मिलेंगे।
फ़ाइल चुनें पर क्लिक करें
आपको निम्नलिखित के समान एक संवाद विंडो दिखाई देगी
अपनी इच्छित छवि का चयन करें, फिर ओपन पर क्लिक करें।
चयनित फ़ाइल का नाम अपलोड फ़ॉर्म में दिखाई देगा, जैसा कि ऊपर दिए गए चित्र में दिखाया गया है। अपलोड इमेज बटन पर क्लिक करें।
यदि सब कुछ ठीक रहा तो आपको निम्नलिखित परिणाम प्राप्त होंगे।
"मेरी छवि देखें!" लिंक पर क्लिक करें
आपको अपलोड की गई छवि दिखाई देनी चाहिए। परिणाम निम्न के समान होंगे।
ध्यान दें कि अपलोड की गई छवि का नाम प्रदर्शित होता है। URLहमने अपलोड की गई छवि के मेटाडेटा से छवि का नाम प्राप्त किया।
नोट: अन्य प्रकार की फाइलों के लिए फाइल अपलोड करने की प्रक्रिया समान ही रहती है।





