Codeigniter: необработанное исключение «PHPExcel_Reader_Exception» с сообщением «Не удается открыть для чтения, файл не существует

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

как первая часть, загруженный файл был успешным, и я загружаю файлы в добавления папка на том же уровне приложение, система, активы . Теперь я хочу загрузить этот файл и импортировать это содержимое в БД. я использую 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 , это работает успешно.

Проблема в том, что я использую BASE_URL (). ‘Uploads / Data_Report.xls’. но файл физически находится там, и я подтвердил, вставив localhost / myproject / uploads / Data_Report.xls на URL, и он успешно загрузился.

Любая помощь будет принята с благодарностью.

6

Решение

Я не уверен, что это так, но вы должны попытаться добавить абсолютный путь в файловой системе, а не путь 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';
4

Другие решения

Делаете ли вы копию файла xls в папку «upload» при отправке формы?

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

if (! move_uploaded_file (
$ _FILES [‘file’] [‘tmp_name’], $ target_path
)
) {
выбросить новое RuntimeException («Не удалось переместить загруженный файл.»);
}

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

1

По вопросам рекламы [email protected]