您尝试上传的文件类型不允许使用codeigniter ver 3.0.4

时间:2016-07-12 08:22:09

标签: php codeigniter

我们收到错误

错误:

  

错误:不允许您尝试上传的文件类型。

 array(1) { ["csv"]=> array(5) { ["name"]=> string(18) "cod_sp_payment.csv" ["type"]=> string(24) "application/vnd.ms-excel" ["tmp_name"]=> string(24) "C:\xampp\tmp\php5910.tmp" ["error"]=> int(0) ["size"]=> int(155) } }

控制器代码:

$config['upload_path'] = './uploads/excel/';
$config['allowed_types'] = 'text/comma-separated-values|application/csv|application/excel|application/vnd.ms-excel|application/vnd.msexcel|text/anytext|text/plain|text/csv|csv';
$this->load->library('upload', $config);

if(! $this->upload->do_upload('csv')) {

    $error = array('error' => $this->upload->display_errors());

    // $this->load->view('upload_form', $error);

    echo $this->upload->display_errors();
}

$upload_data = $this->upload->data();

exit();

3 个答案:

答案 0 :(得分:1)

$config['allowed_types'] = 'csv';可能永远不会做到这一点。您可能需要添加更多类型,如下面的

text/comma-separated-values|application/csv|application/excel|application/vnd.ms-excel|application/vnd.msexcel|text/anytext|text/plain|text/csv|csv

在你的回答中你可以找到

[type] => application/vnd.ms-excel 

mime类型为ms-excel。所以CSV将不起作用。由于这种不同的mime类型,我们无法指定csv文件的mimtype

**注意:**代码中还有其他错误

  

消息:fopen(test2 / uploads / excel / cod_sp_payment.csv):无法打开流:没有这样的文件或目录

请检查文件是否存在

答案 1 :(得分:0)

请确认您的config / mimes.php是否包含文件类型。 要了解上载文件的文件类型,请执行以下操作:

if(! $this->upload->do_upload('csv'))
{
    $error = array('error' => $this->upload->display_errors());
    // $this->load->view('upload_form', $error);
    echo $this->upload->data();
    echo $this->upload->display_errors();
}
$upload_data = $this->upload->data();

答案 2 :(得分:0)

这是因为不同的服务器对文件的处理方式不同。它可以是同一个文件,但mime类型不会被视为相同。

解决方案:

  1. 在CodeIgniter上,打开文件system / libraries / Upload.php。在第199行(在CI ver.3.x中),将行$this->file_size = $_FILES[$field]['size'];更改为$this->_file_mime_type($_FILES[$field]); var_dump($this->file_type); die();

  2. 将文件上传到服务器进行测试。运行测试。确定您的文件类型。复制稍后要再次使用的文件类型。

  3. 现在删除上面步骤1中的更改​​并重新上传文件。

  4. 现在打开文件application / config / mimes.php。转到第97行。它是具有xlsx'的mime类型的部分。在此处粘贴您的新mime类型。将文件上传到您的服务器。

  5. 完成。现在您的申请/上传应该有效。

    我刚刚在这里找到了类似的答案:CodeIgniter: "The filetype you are attempting to upload is not allowed."

    似乎更详细。