我有一个非常奇怪的问题。我正在使用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 ...并最终,在此之前,实际上搜索具有此名称的另一个文件..具有此名称的文件已经在服务器上,它应该遵循覆盖设置:覆盖它或用渐进数字重命名。
答案 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