2012-03-22 10 views
20

मुझे एक बहुत ही अजीब अपलोड समस्या का सामना करना पड़ रहा है। यहाँ आंकड़े देख सकते हैं फ़ाइल है:कोडइग्निटर: "जिस फ़ाइल प्रकार को आप अपलोड करने का प्रयास कर रहे हैं उसे अनुमति नहीं है।"

<form action="http://localhost/index.php/temp/upload/" method="post" enctype="multipart/form-data"> 
    <fieldset> 
     <input type="file" name="userfile"/> 
     <input type="submit" value="Upload"/> 
    </fieldset> 
</form> 

और यहाँ मेरी temp नियंत्रक के upload() विधि है:

public function upload() 
{ 
    $config['upload_path'] = FCPATH . 'uploads' . DIRECTORY_SEPARATOR; 
    assert(file_exists($config['upload_path']) === TRUE); 
    $config['allowed_types'] = 'avi|mpg|mpeg|wmv|jpg'; 
    $config['max_size']  = '0'; 

    $this->load->library('upload', $config); 
    if ($this->upload->do_upload('userfile') === FALSE) 
    { 
     // Some error occured 
     var_dump($this->upload->display_errors('', '')); 
     var_dump($_FILES); 
    } 
    else 
    { 
     // Upload successful 
     var_dump($this->upload->data()); 
    } 
} 

जब मैं एक AVI वीडियो अपलोड, सब कुछ ठीक काम करता है। जब मैं अपलोड करते हैं, कहते हैं, एक WMV वीडियो, मैं निम्नलिखित वर उदासीनता हो:

string 'The filetype you are attempting to upload is not allowed.' (length=57) 

array 
    'userfile' => 
    array 
     'name' => string 'wmv.wmv' (length=7) 
     'type' => string 'video/x-ms-wmv' (length=14) 
     'tmp_name' => string 'C:\wamp\tmp\php2333.tmp' (length=23) 
     'error' => int 0 
     'size' => int 83914 

"wmv" विस्तार MIME प्रकार के रूप में व्याख्या की जा रही है: video/x-ms-wmv। यह ठीक होना चाहिए क्योंकि मेरी config/mimes.php में निम्न है:

'wmv' => array('video/x-ms-wmv', 'audio/x-ms-wmv') 

यह एक समान स्थिति है जब मैं अन्य फ़ाइलों को अपलोड करने का प्रयास करता हूं। अब तक, काम करने के लिए लगता है कि एकमात्र ऐसा मेरा परीक्षण एवीआई वीडियो है।

कोई विचार गलत क्या हो सकता है?

अद्यतन 1:

एक मेरी मशीन, केवल AVI अपलोड। किसी अन्य डेवलपर की मशीन पर, कोई भी फाइल अपलोड नहीं होती है। अभी तक एक और डेवलपर की मशीन पर, सभी समर्थित फाइल अपलोड करें। क्या ये ब्राउज़र या सर्वर समस्याएं हैं?

+0

आश्चर्य है कि यह फ़ाइल नाम 'wmv.wmv' पर लटका हुआ है, तो एक diff फ़ाइल नाम आज़माएं। –

+0

अपलोड आकार सीमा (php.ini) अन्य फ़ाइलों के लिए बहुत छोटा सेट है? – solidau

उत्तर

43

आप Firefox का उपयोग कर रहे हैं, जैसे आप नहीं हैं?

$this->_file_mime_type($_FILES[$field]); 

बदलें कि लाइन के लिए:

$this->_file_mime_type($_FILES[$field]); var_dump($this->file_type); die(); 

फिर अपने .wmv फ़ाइल अपलोड कर सकता

आप system/libraries/Upload.php लाइन 199 में देखने का प्रयास कर सकते हैं। यह application/octet-stream या जो कुछ भी दिखाएगा। इसे अपने mimes.php में जोड़ें। आशा है कि इस मदद =)

इसी प्रकार के जवाब here

कुछ लिंक:

+0

ठीक है, आपका सुझाव काम किया। मैंने सीआई के नवीनतम स्थिर संस्करण में अपडेट किया और देखा कि mimes.php में अब 'wmv' नहीं है। इसलिए मैंने मूल सरणी + एप्लिकेशन/ऑक्टेट-स्ट्रीम वापस जोड़ा। धन्यवाद! – StackOverflowNewbie

+0

इसे वोट करना पर्याप्त नहीं था, धन्यवाद! –

+0

एरिक के साथ सहमत हैं। एक सीएसएस फ़ाइल अपलोड करने के लिए पाठ/सादा जोड़ना पड़ा। – Aaron

1

मुझे हाल ही में कोडिनेटर की अपलोड कक्षा के साथ कुछ ही समान समस्याएं आई हैं।

* allow_types * काम नहीं कर रहा प्रतीत होता है। उदाहरण के लिए, मैं पीएनजी छवियों को अपलोड करने की अनुमति देना चाहता था, लेकिन यह उन्हें फ़िल्टर के माध्यम से अनुमति नहीं देगा। मैं इसे आगे की जांच समाप्त कर दिया। मैंने सभी फाइल प्रकारों को अस्थायी रूप से अपलोड करने की अनुमति दी, मैंने एक पीएनजी अपलोड किया, और उसके बाद अपलोड डेटा ($ यह-> अपलोड-> डेटा()) छोड़ दिया;)। किसी कारण से, यह सोचा कि एमआईएमई प्रकार टेक्स्ट/सादा था! यह आपकी समस्या से संबंधित हो सकता है।

इस के कुछ समाधान हैं मैंने कुछ फ़ोरम सर्फिंग पाया जहां आप कक्षा या कोर को संशोधित/विस्तारित कर सकते हैं, लेकिन उन्होंने मेरे लिए काम नहीं किया - क्षमा करें। मेरा मानना ​​है कि यह कोडिनेटर कोर बग है (मुझे लगता है कि यह मुद्दा एलिसलैब्स के साथ पहले ही खोला जा चुका है)। मैं वैसे भी बदसूरत चीज को कड़ी मेहनत कर रहा था! खैर, मुझे आशा है कि इससे आपको कुछ मदद मिलेगी।

बेसिक उदाहरण/काम के आसपास,

//replace with your allowed MIME types 
if ($_FILES['name_of_form_upload']['type'] != 'image/jpeg' && $_FILES['name_of_form_upload']['type'] != 'image/png' && $_FILES['name_of_form_upload']['type'] != 'image/gif') { 
    $data['message'] = '<div class="message">That file type is not allowed!</div>'; 
    $this->load->view('home_view', $data); 
} else { 
    //run upload code 
} 

संपादित करें: स्वरूपण/व्याकरण

+0

मुझे विश्वास नहीं है कि यह कोर के साथ एक समस्या है। विकास मशीनों में से एक पर, सबकुछ अपेक्षित काम करता है। मेरा संपादन देखें। – StackOverflowNewbie

1

आप $ config [ 'allowed_types'] में एक्सटेंशन के बजाय माइम प्रकार का उपयोग कर प्रयास किया?

लिखने यह इस

$config["allowed_types"] = "video/x-msvideo|image/jpeg|video/mpeg|video/x-ms-wmv"; 
3
  1. अपने .wmv अपलोड सर्वर FTP/SFTP/SCP/आदि जहां CodeIgniter आवेदन
  2. सर्वर पर आप .wmv फ़ाइल अपलोड कर ली जहां चलाने का उपयोग करने के लिए फ़ाइल, निम्नलिखित PHP कोड

    <?php 
    $file_path = 'CHANGE_THIS_TO_ABSOLUTE_FILE_PATH_THAT_YOU_HAVE_UPLOADED.wmv'; 
    $finfo = finfo_open(FILEINFO_MIME); 
    $mime = finfo_file($finfo, $file_path); 
    var_dump($mime); 
    ?> 
    
  3. बचाना कोड निष्पादित के रूप में टर्मिनल में mime.php

  4. भागो - $ php mime.php
  5. यह किसी भी अन्य मूल्य से आप पहले से ही wmv के लिए है उदासीनता, तो wmv माइम प्रकार में है कि मूल्य जोड़ देते हैं।

अन्य विकास मशीनों में PHP_VERSION भी देखें। finfo_open PHP 5.3 में पेश किया गया है। विकास मशीन जहां अपलोड काम कर रहा है, उसके पास PHP का पुराना संस्करण हो सकता है या इसमें डब्लूएमवी के लिए सही माइम प्रकार हो सकता है।

0

यह वास्तव में कोर में एक बग है .. मैंने सीआई के नवीनतम संस्करण में अपग्रेड किया और बग गायब हो गया।

0

लाइन पर CodeIgniter में .doc फ़ाइल अपलोड करने के

बदलें इस

'doc' => 'application/msword', 

इस के साथ कोई 95 (application/config/mimes.php फ़ाइल)

'doc' => array('application/vnd.ms-word','application/msword'), 
0

यदि आप करने के लिए आसान तरीका की जरूरत के लिए जवाब इसे हल करें, इसके लिए एक आसान समाधान है। आवेदन में खुले "प्रणाली/पुस्तकालयों/Upload.php" फ़ाइल

line no 465 
you will see 
if (! $this->is_allowed_filetype()) 
     { 
      $this->set_error('upload_invalid_filetype', 'debug'); 
      return FALSE; 
     } 


just make it true 

    if (! $this->is_allowed_filetype()) 
      { 
       $this->set_error('upload_invalid_filetype', 'debug'); 
       return TRUE; 
      } 

note : it will stop your all file type validation. 
0

आवेदन/config में अपने mimes.php फ़ाइल की जाँच करें। इसे माइम प्रकार की शुरुआत में return $mimes; फ़ाइल या return array(..... के अंत में माइम प्रकारों की एक सरणी वापस करनी चाहिए।

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

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