PHP-Codeigniter: Неперехваченное исключение "PHPExcel Reader Exception" с сообщением " не удалось открыть для чтения, файл не существует

мой текущий проект CI теперь обрабатывает файлы. я хочу загрузить файлы xls| xlsx на сервер, а затем импортировать данные файла excel в таблицу базы данных.

как первая часть, загруженный файл был успешным, и я загружаю файлы в передает папка на том же уровне приложений , система, активы . теперь я хочу загрузить этот файл и импортировать его содержимое в DB. Я использую PHPExcel для этого операция

вот мой контроллер

$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);
   }

и вот мой взгляд

<?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>"?>

когда я бегу, он показывает мне ошибку Uncaught exception 'PHPExcel_Reader_Exception' with message 'Could not open http://localhost/myproject/uploads/Data_Report.xls for reading! File does not exist.'

когда я ставлю этот Data_Report.файл XLS внутри htdocs , он работает успешно .

проблема в том, что im использует BASE_URL ().'uploads / Data_Report.в XLS'. но файл физически существует, и я проверил, вставив localhost/myproject/uploads / Data_Report.xls по url и он загрузил успешно.

любая помощь была бы весьма признательна .

2 ответов


Я не уверен, что это так, но вы должны попытаться добавить абсолютный путь в файловой системе, а не путь url.

как:

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

, а не

yourUrl.com/uploads/Data_Report.xls

как получить абсолютный путь (не прописать!) с Codeigniter вы можете использовать:

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

поэтому я не помню структуру codeigniter, но я получил это от google, поэтому сделайте что-нибудь вроде этого:

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

вы делаете копию файла xls в свой каталог "загрузить" при отправке формы?

Это будет что-то вроде ниже:

if (!move_uploaded_file( $_FILES ['file'] ['tmp_name'], $target_path ) ) { throw new RuntimeException ('не удалось переместить загруженный файл.'); }

по умолчанию файл загружается во временный каталог (в вашем случае это htdocs), и его нужно переместить в целевой путь выбор перед выполнением Excel открыть через PHP Excel lib.