2014-12-31 28 views
6

Şu anki CI projem şu an dosyalarla çalışıyor. xls yüklemek istiyorum | xlsx dosyaları sunucuya ve daha sonra excel dosyası verilerini Veritabanı tablosuna aktarın. İlk bölümü olarak PHP - Codeigniter: Yakalanmamış istisna 'PHPExcel_Reader_Exception' iletisiyle 'Okuma için açılamadı, Dosya mevcut değil

, yüklenen dosya başarılı oldu ve ben uygulaması, sistem, varlıklar aynı seviyede yüklemeler klasöre dosya yükleyebilir. şimdi bu dosyayı yüklemek ve bu içeriği DB'ye aktarmak istiyorum. Bu operasyonda İşte

yapmak PHPExcel kullanıyorum burada Kontrolör

$this->load->library('phpexcel'); 
$this->load->library('PHPExcel/iofactory'); 

$objPHPExcel = new PHPExcel(); 

$objReader= IOFactory::createReader('Excel2007'); 
$objReader->setReadDataOnly(true); 

$objPHPExcel=$objReader->load(BASE_URL().'uploads/Data_Report.xls'); 

$objWorksheet=$objPHPExcel->setActiveSheetIndex(0); 

$this->load->model('datas_model'); 

for($i=2;$i<=77;$i++) { 

    $client_name= $objWorksheet->getCellByColumnAndRow(0,$i)->getValue(); 
    $client_address= $objWorksheet->getCellByColumnAndRow(1,$i)->getValue(); 
    $data_inp=array('name'=>$client_name, 'address'=>$client_address); 
    $this->datas_model->add_data($data_inp); 
    } 

ve

<?php echo form_open_multipart('../settings_controller/upload_data/do_upload');?> 

    <div class="custom-file-upload"> 
     <input type="file" id="file" name="userfile" multiple/> 
    </div> 
    <div class="button-container-2"> 
     <button class="btn btn-primary" id="updown-btn" type="submit" style="height:45px;">Upload </button> 
    </div> 

<?php echo "</form>"?> 

bunu koşuyorum bana bir hata gösterir benim View var Uncaught exception 'PHPExcel_Reader_Exception' with message 'Could not open http://localhost/myproject/uploads/Data_Report.xls for reading! File does not exist.'

bu Data_Report.xls dosyasını htdocs içine koyduğumda rks başarıyla.

Sorun, BASE_URL(). 'Uploads/Data_Report.xls' kullanıyor. ancak dosya fiziksel olarak orada ve localhost/myproject/uploads/Data_Report.xls dosyasını url'ye yapıştırarak doğruladı ve başarıyla yüklendi.

Herhangi bir yardım büyük memnuniyetle karşılanacaktır.

cevap

4

Bu durumun geçerli olup olmadığından emin değilim, ancak mutlak yolu dosya sisteminde değil, URL'nin yolunu eklemeyi denemelisiniz.

gibi:

/var/www/YourProject/public/uploads/Data_Report.xls 

değil

yourUrl.com/uploads/Data_Report.xls 

(! Hayır hardcoding) mutlak yolunu nasıl CodeIgniter'da ile kullanabilirsiniz:

FCPATH -> '/' 
BASEPATH -> '/system/' 
APPPATH -> '/application/' 

yüzden yok codeigniter yapısını hatırlıyorum ama bunu google'dan aldım, Bunun gibi bir şey:

APPPATH.'public/uploads/what_ever.xls'; 
+0

şimdi base_url öğesini kaldırarak göreceli yolu sağladığımda bir çözüm buluyorum.ama bu sorunu çözmek için bu doğru yöntemdir. base_url kullanmıyor mu? Yani gelecekte (hosting) –

+0

herhangi bir sorun var benim mutlak yolun hardcoding için cevap benim güncellendi ve –

+0

çalışıyorsa evet zaten işe yaradıysa zaten çalışmış ./myproject/uploads/Data_Report.xls BASE_URL olmadan() –

1

Form gönderiminde "upload" dizininize xls dosyasının bir kopyasını mı yapıyorsunuz? (! Move_uploaded_file ( $ _FILES [ 'file'] [ 'tmp_name'], $ hedef_yolu ) )

eğer { atmak Başarısız yeni RuntimeException ('taşımak için:

Aşağıda gibi bir şey olacak yüklenen dosya. '); }

varsayılan olarak Dosya, geçici dizine yüklenir (sizin durumunuzda htdocs gibi görünür) ve Excel'i PHP Excel lib kullanarak açmadan önce, tercih edilen hedef yoluna taşınması gerekir.