无法在codeigniter中上传excel文件

时间:2015-10-30 02:52:58

标签: codeigniter file-upload phpexcel lamp

我有一个Codeigniter项目,可以通过上传excel文件并使用PHPExcel读取数据来将数据插入数据库。它正在我的本地主机上工作,但是当我将它上传到LAMP服务器时,它会给我一个错误不允许您尝试上传的文件类型。我将如何解决此问题?

修改 在我的项目中,我还有一个文件图片上传..

 public function uploadConfig(){
    $this->load->library('PHPExcel');  
    $this->load->library('PHPExcel/IOFactory');
    $config['upload_path'] = './csv_uploads/'; 
    $config['allowed_types'] = 'xlsx|csv|xls';
    $config['max_size'] = '10000'; 
    $config['overwrite'] = true;
    $config['encrypt_name'] = FALSE;
    $config['remove_spaces'] = TRUE;

    $this->load->library('upload', $config);
    $this->upload->initialize($config);

    if (!is_dir('csv_uploads'))
    {
        mkdir('./csv_uploads', 0777, true);
    }
    // gif|jpg|jpeg|png
}

这适用于 XAMPP 中的本地主机。但是,当我将其上传到 LAMP 服务器上时,它无效。

6 个答案:

答案 0 :(得分:2)

对于不允许您尝试上传的文件类型,由于您的文件类型错误或无法实现,会出现此问题。

请在下面的步骤中应用以获取您的文件类型。

您可以查看system / libraries / Upload.php第199行:

$this->_file_mime_type($_FILES[$field]);

将该行更新为:

 $this->_file_mime_type($_FILES[$field]); var_dump($this->file_type); die();

现在您可以看到您的实际文件类型,如xlsx或csv或xls或ods

现在您可以在代码

下添加文件类型
$config['allowed_types'] = 'xlsx|csv|xls';

还添加config/mimes.php

答案 1 :(得分:2)

Codeigniter 3

添加到您的config / mimes.php类型'application / octet-stream'

'xlsx'  =>  array('application/octet-stream','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip', 'application/vnd.ms-excel', 'application/msword', 'application/x-zip')

那么它会起作用

答案 2 :(得分:1)

转到<?php $i = 0; if ( have_posts() ) : while ( have_posts() ) : the_post(); if($i % 5 == 0){?> <div class="forward"> SOME NEWSLETTER CODE HERE </div> <?} $post_id = get_the_ID(); ?> <?php get_template_part('content','home'); ?> <?php endwhile; ?> <?php endif; ?> - &gt;第32行(xls) - &gt;将config/mimes.php添加到现有数组中。

'application/vnd.ms-office'

这项工作仅针对任何其他类型的xls获取mime类型并添加到此数组中。

答案 3 :(得分:1)

如果使用liberOffice或Open Office,将遇到此问题。在您的application / config / mimes.php中添加“ xlsx”中的“ application / octet-stream”类型

'xlsx'  =>  array('application/octet-stream','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip', 'application/vnd.ms-excel', 'application/msword', 'application/x-zip')

答案 4 :(得分:0)

您的代码

$config['allowed_types'] = 'xlsx|csv|xls';
  

但在U buntu中,保存文件类型为 ods 格式。因此永远不会允许上传。添加

$config['allowed_types'] = 'xlsx|csv|xls|ods';
config/mimes.php

中的

添加此

'ods'   =>  array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip'),

在文件夹

中提供写入的渗透
sudo chown apache:apache -R /var/www/html

并在php.ini

  1. 检查 file_upload
  2. 并检查 最大上传限制
  3. 以及 最长执行时间

答案 5 :(得分:-1)

在您的代码中添加以下行

 $config['allowed_types']        = '*';
 $config['detect_mime']          = false;

这是配置设置。