无法在 codeigniter 中上传 excel 文件

unable to upload an excel file in codeigniter

我有一个 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 服务器时,它没有工作。

你的代码中

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

But in Ubuntu it save file types is ods format. So it will never let allow to upload. add that

$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. 以及检查最大执行时间

对于不允许您尝试上传的文件类型出现此问题是因为您的文件类型错误或不符合要求。

请按照以下步骤获取您的文件类型。

您可以查看 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

代码点火器 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')

然后就可以了

转到 config/mimes.php -> 第 32 行 (xls) -> 添加 'application/vnd.ms-office' 到现有数组中。

'xls'   =>  array('application/excel', 'application/vnd.ms-excel', 'application/msexcel', **'application/vnd.ms-office'**)

这仅适用于任何其他类型的 xls 获取 mime 类型并添加到此数组中。

在您的代码中添加以下行

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

这是配置设置。

如果您使用的是 libreOffice 或 Openoffice,您将会遇到这个问题。添加 "application/octet-stream" 输入 'xlsx' 到您的 application/config/mimes.php

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