2010-11-01 13 views
11

कोडिग्निटर का उपयोग करके अपलोड की गई फ़ाइल का नाम बदलना, मैं अपलोड की गई फ़ाइल के नाम को किसी भी रिक्त स्थान को हटाकर और बाद के शब्दों को कैपिटल करने के द्वारा ऊंट के लिए संशोधित करने का प्रयास कर रहा हूं।कोडइग्निटर

मुझे पूरा यकीन है कि मैं move_uploaded_file के दूसरे पैरामीटर का उपयोग करके फ़ाइल का नाम बदल सकता हूं लेकिन मुझे यह भी पता नहीं है कि कैमेलकेस में नाम को कैसे संशोधित करना है, यह जानने के लिए कहां देखना है।

अग्रिम धन्यवाद! जॉन

उत्तर

14

चेक बाहर सीआई के अपलोड पुस्तकालय:

http://www.codeigniter.com/user_guide/libraries/file_uploading.html

चलो पहले फ़ाइल नाम बदले बिना कैसे एक साधारण फाइल अपलोड करने के लिए पर एक नज़र डालें:

$config['upload_path'] = './uploads/'; 
$config['allowed_types'] = 'jpg|jpeg|gif|png'; 

$this->upload->initialize($config); 

if (! $this->upload->do_upload()) 
{ 
    $error = $this->upload->display_errors(); 
} 
else 
{ 
    $file_data = $this->upload->data(); 
} 

यह इतना सरल और यह काफी अच्छी तरह से काम करता है।

अब, आइए अपनी समस्या के मांस को देखें।

$file_name = $_FILES['file_var_name']['name']; 

फिर हम एक _ सीमांकक इस तरह के साथ स्ट्रिंग विभाजित कर सकते हैं: सबसे पहले हम $ _FILES सरणी से फ़ाइल नाम प्राप्त करने की आवश्यकता

$file_name_pieces = split('_', $file_name); 

फिर हम से अधिक पुनरावृति करना होगा सूची और एक नया स्ट्रिंग जहां सभी पहले स्थान को छोड़कर बड़े अक्षरों बनाती हैं:

$new_file_name = ''; 
$count = 1; 

foreach($file_name_pieces as $piece) 
{ 
    if ($count !== 1) 
    { 
     $piece = ucfirst($piece); 
    } 

    $new_file_name .= $piece; 
    $count++; 
} 

अब जब हम नया फ़ाइल नाम है, हम फिर से मिलना कर सकते हैं कि हम क्या ऊपर किया। असल में, तुम सब कुछ एक ही छोड़कर आप इस $ config परम जोड़ने कार्य करें:

$config['file_name'] = $new_file_name; 

और है कि यह करना चाहिए! डिफ़ॉल्ट रूप से, सीआई में overwrite $ कॉन्फ़िगर पैरामीटर FALSE पर सेट है, इसलिए यदि कोई विवाद हो, तो यह आपके फ़ाइल नाम के अंत तक एक संख्या जोड़ देगा। पैरामीटर की पूरी सूची के लिए, इस पोस्ट के शीर्ष पर स्थित लिंक देखें।

+0

काम किया है ... आप बहुत – jgravois

+0

महान जवाब धन्यवाद! इससे मुझे बहुत मदद मिलती है। –

+0

मैं '_' का उपयोग करने के लिए' _' डिलीमीटर का उपयोग करने से स्विच करने का प्रयास कर रहा हूं। '.' डिलीमीटर पर विस्फोट के संदर्भ में,' _' के बजाय '.' का उपयोग कर फ़ाइल नाम अधिक समझ में आता है। हालांकि, किसी कारण से सहेजने मेरा नाम नहीं ले रहा है, लेकिन '_' का उपयोग करने पर जोर देता है। कोई भी सीआई के साथ छवियों का नाम बदलने की इस तरह की समस्या में भाग लेता है? – TARKUS

0
$file_name = preg_replace('/[^a-zA-Z]/', '', ucwords($_FILES['file_var_name']['name'])); 
3
$this->load->helper('inflector'); 
$file_name = underscore($_FILES['file_var_name']['name']); 
$config['file_name'] = $file_name; 

कि काम करना चाहिए भी