CodeIgniter上传类file_ext_tolower无效,即使在localhost

时间:2017-02-15 16:12:24

标签: php codeigniter file-upload

我有一个非常奇怪的问题。我正在使用CodeIgniter上传类来管理简单jpg图像的上传。如果我上传扩展名为.JPG的文件,即使我将属性file_ext_tolower设置为TRUE,我的文件也会以.JPG扩展名上传。这是我不想要的东西!这是一些代码..

$this->load->library('upload');

$config['upload_path'] = './resources/img/content';
$config['allowed_types'] = 'jpg';
$config['overwrite'] = FALSE;
$config['file_ext_tolower'] = TRUE;
$config['remove_spaces'] = TRUE;

$this->upload->initialize($config, true);

if ( ! $this->upload->do_upload('cover')) {
    $this->session->set_flashdata('message','Cover: ' . $this->upload->display_errors());
    redirect('admin');
    break;
} else {
    // Whatever
}

问题是,即使在localhost上也不会运行。它始终继续并使用.JPG上传文件。我只是无法理解。我在服务器和localhost上都使用CodeIgniter 3.1.0。有什么想法吗?在服务器上,我还在php.ini中启用了fileinfo扩展名。

这带来的另一件事是..如果我有一个名为myfile.JPG和myfile.jpg的文件,CodeIgniter无法看到它们是同一个文件......最终它可能是什么呢?如果只有file_ext_tolower工作正常。

在服务器上,myfile.JPG保存为myfile.JPG。我认为,当file_ext_tolower设置为TRUE时,它应保存为myfile.jpg ...并最终,在此之前,实际上搜索具有此名称的另一个文件..具有此名称的文件已经在服务器上,它应该遵循覆盖设置:覆盖它或用渐进数字重命名。

1 个答案:

答案 0 :(得分:0)

我有解决方案:)

创建文件:application / libraries / MY_Upload.php

<?php 
class MY_Upload extends CI_Upload
{
    /**
     * Force filename to lowercase
     *
     * @var string
     */
    public $file_name_tolower = FALSE;


    function _prep_filename($filename)
    {
        if ($this->mod_mime_fix === FALSE OR $this->allowed_types === '*' OR ($ext_pos = strrpos($filename, '.')) === FALSE)
        {
            return $filename;
        }

        $ext = substr($filename, $ext_pos);
        $filename = substr($filename, 0, $ext_pos);

        //change ext tolower
        $filename = ($this->file_name_tolower)?strtolower($filename):$filename;
        //change ext tolower
        $ext = ($this->file_ext_tolower)?strtolower($ext):$ext;

        return str_replace('.', '_', $filename).$ext;
    }
}

我modyfication file_ext_tolower 并添加 file_name_tolower

文件示例:coVEr.JPG

...
$config['file_ext_tolower'] = TRUE;
$config['file_name_tolower'] = TRUE;
...

结果: cover.jpg

...
$config['file_ext_tolower'] = TRUE;
$config['file_name_tolower'] = FALSE;
...

结果: coVEr.jpg

...
$config['file_ext_tolower'] = FALSE;
$config['file_name_tolower'] = TRUE;
...

结果: cover.JPG

...
$config['file_ext_tolower'] = FALSE;
$config['file_name_tolower'] = FALSE;
...

结果: coVEr.JPG