【问题标题】:the file type you are attempting to upload is not allowed codeigniter ver 3.0.4您尝试上传的文件类型不允许使用 codeigniter ver 3.0.4
【发布时间】:2016-11-14 09:04:43
【问题描述】:

我们遇到了一个错误

错误:

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

 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();

【问题讨论】:

    标签: php codeigniter


    【解决方案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):打开流失败:没有这样的文件或目录

    请检查文件是否存在

    【讨论】:

    • @AnuAbraham 但很难理解 cmets 中的代码,您始终可以通过单击标签下方的编辑按钮来更新您的问题。
    • @Arun 我们已按照您的建议更改了代码。请检查上面的代码
    【解决方案2】:

    请确认您的 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();
    

    【讨论】:

      【解决方案3】:

      这是因为不同的服务器处理文件的方式不同。它可以是同一个文件,但 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 类型粘贴到此处。将文件上传到您的服务器。

      完成。现在您的应用程序/上传应该可以工作了。

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

      好像比较详细。

      【讨论】:

        猜你喜欢
        • 2017-08-18
        • 2012-04-06
        • 2012-04-22
        • 1970-01-01
        • 2011-11-21
        • 2011-06-08
        • 2014-12-30
        • 2023-04-07
        • 1970-01-01
        相关资源
        最近更新 更多