दिलचस्प पोस्ट
bash: एक पाठ फ़ाइल में एक पूरी लाइन की जगह डीजेन्गो – एक सूची को एक क्वेरी में वापस परिवर्तित करें कब करना उचित है? ASP.NET MVC एक शब्दकोश में बाध्य है FormData.append ("कुंजी", "मूल्य") काम नहीं कर रहा है कौन सा बेहतर है, रिटर्न वैल्यू या आउट पैरामीटर? जावास्क्रिप्ट में अजीब व्यवहार … के लिए बढ़ाया … लूप में जावा में इस और वर्ग का अर्थ मैं कोणीय मार्ग वाले घटकों को डेटा कैसे प्राप्त करूं? सी # तिथि समय "YYYYMMDDHHMMSS" प्रारूप में पासिंग का अपरिभाषित उद्देश्य क्या है? सी # और जावा में जेनेरिक के बीच अंतर क्या है … और सी ++ में टेम्पलेट्स? जावास्क्रिप्ट दिनांक में दिन जोड़ें जावा में लंबाई और लंबाई () PowerShell का उपयोग करते हुए फ़ाइल में एकाधिक स्ट्रिंग्स को कैसे बदलें

Codeigniter में अपलोड – आप अपलोड करने का प्रयास कर रहे फ़ाइल प्रकार की अनुमति नहीं है

मुझे त्रुटि मिल रही है: जब मैं किसी फ़ाइल को अपलोड करने की कोशिश करता हूं तो आप अपलोड करने का प्रयास कर रहे फ़ाइल प्रकार की अनुमति नहीं है

if(!empty($_FILES['proof_of_purchase']['name'])) { $config['upload_path'] = './uploads/invoices/'; $config['allowed_types'] = 'gif|jpg|jpeg|png|pdf|bmp'; $config['max_size'] = '3000'; $this->load->library('upload', $config); // if there was an error, return and display it if (!$this->upload->do_upload('proof_of_purchase')) { $data['error'] = $this->upload->display_errors(); $data['include'] = 'pages/classic-register'; } else { $data['upload_data'] = $this->upload->data(); $filename = $data['upload_data']['file_name']; } } 

मैंने कई अलग-अलग फाइलों की कोशिश की है- ज्यादातर जीआईएफ और जेपीजी और हर बार एक ही त्रुटि प्राप्त की।

var_dump ($ _ फ़ाइलें); मुझे देता है:

 array(1) { ["proof_of_purchase"]=> array(5) { ["name"]=> string(28) "2010-12-04_00019.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(19) "D:\temp\php2BAE.tmp" ["error"]=> int(0) ["size"]=> int(58054) } } 

मैंने माइम कॉन्फ़िग की जांच की है और इसमें सही सामान शामिल है। उदाहरण:

 'jpeg' => array('image/jpeg', 'image/pjpeg'), 'jpg' => array('image/jpeg', 'image/pjpeg'), 'jpe' => array('image/jpeg', 'image/pjpeg'), 

मैंने इस पर बहुत अधिक समय बिताया है और यह मुझे पागल कर रहा है! कोई भी विचार बहुत उपयोगी होगा

वेब के समाधान से एकत्रित समाधान "Codeigniter में अपलोड – आप अपलोड करने का प्रयास कर रहे फ़ाइल प्रकार की अनुमति नहीं है"

यदि आप Codeigniter संस्करण 2.1.0 का उपयोग कर रहे हैं तो अपलोड लाइब्रेरी में एक बग है। अधिक विवरण के लिए http://codeigniter.com/forums/viewthread/204725/ देखें।

मूल रूप से मैंने जो कुछ किया था, वह फ़ाइल अपलोड क्लास में कुछ लाइनों को संशोधित करता है (स्थान: ./system/libraries/Upload.php)

1) लाइन नंबर 1044 को संशोधित करें

से:

 $this->file_type = @mime_content_type($file['tmp_name']); return; 

इसके लिए:

 $this->file_type = @mime_content_type($file['tmp_name']); if (strlen($this->file_type) > 0) return; 

2) लाइन नंबर 1058 को संशोधित करें

से:

 @exec('file --brief --mime-type ' . escapeshellarg($file['tmp_path']), $output, $return_code); 

इसके लिए:

 @exec('file --brief --mime-type ' . escapeshellarg($file['tmp_name']), $output, $return_code); 

जैसा कि आप शायद देख सकते हैं, पंक्ति 1058 एक सरणी मान का उपयोग करने की कोशिश करता है जो मौजूद नहीं है।

मुझे सीआई के साथ ये समस्याएं हैं और फ़ोरम पर या गूगल के माध्यम से कोई फ़िक्स नहीं मिल पा रहे हैं मैंने जो कुछ किया है वह सभी फाइल प्रकारों को अनुमति देने के लिए है, ताकि फ़ाइल अपलोड हो जाए फिर, मैं यह तय करने के लिए तर्क को मैन्युअल रूप से संभालता हूं कि फाइल को अनुमति देने / रखने के लिए, या इसे हटा दें और उपयोगकर्ता को बताएं कि फ़ाइल प्रकार की अनुमति नहीं है

 $config['upload_path'] = './uploads/invoices/'; $config['allowed_types'] = '*'; // add the asterisk instead of extensions $config['max_size'] = '3000'; $this->load->library('upload', $config); if (!$this->upload->do_upload('proof_of_purchase')) { $data['error'] = $this->upload->display_errors(); $data['include'] = 'pages/classic-register'; } else { $data['upload_data'] = $this->upload->data(); // use custom function to determine if filetype is allowed if (allow_file_type($data['upload_data']['file_ext'])) { $filename = $data['upload_data']['file_name']; } else { show_error('File type is not allowed!'); } } 

संपादित करें – यह मान रहा है कि आप सीआई 2 का उपयोग कर रहे हैं (सीआई 1 में आप ट्यूटोरियल का पालन करके सभी फाइलप्रकारों को अनुमति दे सकते हैं: http://net.tutsplus.com/tutorials/php/6-codeigniter-hacks-for-the- स्वामी / )

मैंने सीआई_उपॉड क्लास का विस्तार करने के लिए मेरी खुद की लाइब्रेरी "MY_Upload" बनाया था, फिर मैंने सीआई_उपलोड वर्ग की प्रतिलिपि बनाई है और मेरे कस्टम लाइब्रेरी में एडम द्वारा उल्लिखित परिवर्तनों को लागू किया है (समाधान के लिए एक गुच्छा BTW धन्यवाद)

यह मुझे मानक सीआई वाक्यविन्यास का उपयोग करने की अनुमति देता है, और मूल फ़ाइलों को हैकिंग से बचने के लिए! मेरी लाइब्रेरी स्वचालित रूप से उपयोग की जाती है क्योंकि यह मूल रूप से "विस्तारित" है, यह पूरी तरह से पीड़ारहित समाधान है और अगर कुछ कारणों से आपको मूल फाइलों को बदलने की ज़रूरत नहीं तोड़ती है

पुनश्च: जब मैं कस्टम लॉग उत्पन्न करना चाहता हूं तब भी मैं लॉगिंग क्लास के साथ ऐसा करता हूं।

मेरी भी यही समस्या थी। आपको यह जाँचने की आवश्यकता हो सकती है कि क्या एप्लिकेशन अपलोड की जा रही फ़ाइल के माइमप्रकार को पहचानता है या नहीं। Config / mimes.php के लिए एक नया माइमप्रकार जोड़ने से समस्या ठीक हो गई है 🙂

यह Codeigniter संस्करण 2.2 के लिए है। अगर यह प्रश्न अभी भी प्रासंगिक है मैंने फ़ाइल सिस्टम / लायब्रेरी / protected function _file_mime_type($file) फ़ाइल में गलती का पता लगाया: फ़ंक्शन के लिए protected function _file_mime_type($file) पंक्ति 1032 और पंक्ति 1046: $this->file_type = $matches[1]; जब मैं एक्सटेन्शन .txt के साथ एक फाइल अपलोड कर रहा था तो लाइन 1046 पर स्टेटमेंट को 'text/x-asm' का गलत मूल्य $this->file_type जाता है जिसे बाद में 'text/plain' की तुलना में किया जाता है और चूंकि माइम प्रकार करते हैं मैच से मेल नहीं खाती, असफल फ़ाइल प्रकार और त्रुटि संदेश:

'आप अपलोड करने का प्रयास कर रहे फ़ाइल प्रकार की अनुमति नहीं है'

समाधान, निश्चित नहीं है, लेकिन काम करने के लिए प्रतीत होता है कि जल्दी ठीक करने के लिए, लाइन 1032 की स्थिति को बदलने के लिए इतना NOT कि यह पढ़ता है: if (!function_exists('finfo_file')) बजाय: if (function_exists('finfo_file')) । आशा है कि यह किसी को मदद कर सकता है

समाधान सिस्टम / पुस्तकालयों में Upload.php को प्रतिस्थापित करता है / CodeIgniter v2.0.3 के Upload.php द्वारा

इस समस्या के कारण PHP FileInfo एक्सटेंशन नहीं होने के कारण होता है अपलोड क्लास का इस्तेमाल करता है फ़ंक्शन उस एक्सटेंशन का हिस्सा है।

http://www.php.net/manual/en/ref.fileinfo.php

यदि आप सिस्टम फ़ाइलों को बदलना नहीं चाहते हैं बस यह प्रयास करें:

  1. ओपन system/libraries/Upload.php (विधि do_upload() पंक्ति 205) और ऐसा करें

     var_dump($this->file_type); exit(); 
  2. कुछ फाइल अपलोड करने का प्रयास करें

  3. फ़ाइल प्रकार जोड़ें, जिसे आप var_dump() में application/config/mimes.php

थोड़ा उदाहरण: आपको .docx साथ समस्या है। जोड़ने का प्रयास करें:

 'docx' => array('application/zip', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') 

application/config/mimes.php के लिए

उसी समस्या के साथ मेरे पास था, जब मैं अपलोड करने के लिए एक अप्लिकेशन अपलोड करने की कोशिश कर रहा था, ".xlsx" फाइलें, जो "इक्सिनेटर की मइम्स.एफ़पी फाइल में" एक्सएलएस फ़ाइल एक्सटेंशन के प्रतिनिधित्व करने के लिए उसके सरणी में एक प्रविष्टि होती है।

तो यहाँ निम्नलिखित लिंक में , मैंने यह वर्णन किया है कि इस समस्या से निपटने के लिए वास्तव में क्या होता है और समाधान का पता लगाता है!

सादर,

Randika

यह संभवतः जांच करने के लायक है कि आपके पास अनुप्रयोग / config / mimes.php का नवीनतम संस्करण है, बजाय एक चर $ mimes सेट करने के बजाय अब यह सिर्फ एक सरणी देता है

नया माइम.एफ़पी

रिटर्न सरणी

पुराने mimes.php

$ mimes = सरणी

यदि आपके पास अभी भी mimes.php का पुराना संस्करण है तो सामान्य। Php फ़ंक्शन और get_mimes () एक खाली सरणी देता है। इस अपलोड को अपलोड करने का नॉकऑन प्रभाव है

एक बार जब मैं यह पता लगाया, तो सभी ठीक काम कर रहे थे 🙂

1) सभी फ़ाइल प्रकारों को अनुमति दें 2) फ़ाइल प्रकारों को स्वीकार या अस्वीकार करने के लिए पारंपरिक php के साथ मैन्युअल रूप से सत्यापन नियम सेट करें। 3) यदि सत्यापन नियमों का पालन किया जाता है, तो सीआई अपलोड सहायक का उपयोग करके अपलोड करें।

 if (isset($_FILES['upload_file']) && !empty($_FILES['upload_file'] ['name'])) { $file_name=$_FILES['upload_file'] ['name']; $acceptedext=array("zip","pdf","png","jpg","jpeg"); $a=(explode('.', $file_name)); $b=end($a); $file_ext=strtolower($b); if (!in_array($file_ext, $acceptedext)) { $this->session->set_flashdata( 'flash_message_error', "file format not accepted!" ); redirect( base_url( 'page' ) ); } else{ $config['upload_path'] = './uploads/'; $config['allowed_types'] = '*'; $this->load->library('upload'); $this->upload->initialize($config); if (!$this->upload->do_upload('upload_file')) { $error = $this->upload->display_errors('', ' '); $this->session->set_flashdata( 'flash_message_error', $error ); redirect( base_url( 'page' ) ); } } }