PHP - Codeigniter:未捕获的异常“PHPEcel_Reader_Exception”,消息为“无法打开以进行阅读,文件不存在

6l7fqoea  于 2023-05-27  发布在  PHP
关注(0)|答案(2)|浏览(135)

我当前的CI项目现在正在处理文件。我想上传xls| xlsx文件到服务器,然后将Excel数据导入数据库表。
作为第一部分,上传文件成功,我将文件上传到应用、系统、资产同级的上传文件夹。现在我想加载这个文件并将这些内容导入DB。我使用PHPEcel进行此操作。
这是我的控制器

$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 the 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'时。但文件确实存在。我通过在URL上粘贴localhost/myproject/uploads/Data_Report. xls进行了验证,它成功下载。
任何帮助将不胜感激。

k2fxgqgv

k2fxgqgv1#

我不确定是不是这样,但是你应该尝试在文件系统中添加绝对路径,而不是url的路径。
例如:

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

而不是

yourUrl.com/uploads/Data_Report.xls

如何获得绝对路径(没有硬编码!)与codeigniter你可以用途:

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

所以我不记得codeigniter的结构,但我从谷歌得到了这个,所以这样做:

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

5cnsuln72#

你做的xls文件的副本到您的“上传”目录的形式提交?
它将像下面这样:
if(!move_uploaded_file($_FILES['file']['tmp_name'],$target_path)){ throw new RuntimeException('Failed to move uploaded file.');}
默认情况下,文件上传到临时目录(在您的情况下,它似乎是htdocs),它需要移动到选择的目标路径,然后通过PHP Excel库执行Excel打开。

相关问题