Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 您尝试上载的文件类型不允许使用codeigniter 3.0.4版_Php_Codeigniter - Fatal编程技术网

Php 您尝试上载的文件类型不允许使用codeigniter 3.0.4版

Php 您尝试上载的文件类型不允许使用codeigniter 3.0.4版,php,codeigniter,Php,Codeigniter,我们遇到了一个错误 错误: 错误:不允许尝试上载的文件类型 控制器代码: $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/

我们遇到了一个错误

错误:

错误:不允许尝试上载的文件类型

控制器代码:

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

$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
文件的MIM类型

**注意:**您的代码中还有一个错误

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


请检查文件是否存在

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

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

解决方案:

  • 在CodeIgniter上,打开文件系统/libraries/Upload.php。在第199行(在CI版本3.x中),更改行
    $this->file\u size=$\u FILES[$field]['size']
    $this->\u文件\u mime\u类型($\u文件[$field]);变量转储($this->file\u type);模具()

  • 将文件上载到服务器以进行测试。运行测试。确定您的文件类型。复制文件类型,以便以后再次使用

  • 现在删除上面步骤1中的更改并重新上载文件

  • 现在打开文件application/config/mimes.php。转到第97行。它是具有“xlsx”mime类型的部件。通过将新mime类型粘贴到此处,将其包括在内。将文件上载到服务器

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

    我在这里找到了一个类似的答案:


    它似乎更详细。

    @但是很难理解注释中的代码。您可以随时通过单击标签下面的“编辑”按钮来更新您的问题。@Arun我们已经按照您的建议更改了代码。请检查以上代码
    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();