2011-04-20 49 views
6

我有一些问题,改变上传的文件名:改变笨(点和下划线)上传的文件名

$config = array(
     'allowed_types' => 'mp3', 
     'file_name' => $fulltitle,  // Lets say we've entered 'a.s.d.f.mp3' 
     'upload_path' => './music/' 
    ); 
$this->load->library('upload', $config);   
$this->upload->do_upload(); 

但是,当我检查我的文件名就说明我

a.s_.d_.f_.mp3

为什么CodeIgniter在第一个点之前的每个点之前都加下划线?我如何禁用此功能? 谢谢。

ADDED

好吧,我找到解决方案。系统 - >库 - > Upload.php文件。

行994,_prep_filename()函数。

 $parts  = explode('.', $filename); 
    $ext  = array_pop($parts); 
    $filename = array_shift($parts); 

    foreach ($parts as $part) 
    { 
     if (! in_array(strtolower($part), $this->allowed_types) OR $this->mimes_types(strtolower($part)) === FALSE) 
     { 
      $filename .= '.'.$part.'_'; // Line 994 
     } 
     else 
     { 
      $filename .= '.'.$part; 
     } 
    } 
+0

我只是看透了,发现也是如此。你在我面前。 :) – Fuseblown 2011-04-20 10:14:59

+0

有没有办法得到这个效果而不直接修改系统文件? – maan81 2012-12-07 08:24:50

+0

我试图在我的文件名中使用点,但没办法,没有CodeIgniter。所以当我指定'abcdefg.room.001.jpg'之类的东西时,它会自动重命名文件'abcdefg_room_001.jpg'。我宁愿使用点,因为我想做一些类似'explode(“。”,“abcdefg.room.001.jpg”);'否则,我必须使用strpos和substr更复杂的字符串操作。 – TARKUS 2016-04-05 18:57:57

回答

3

尝试增加'remove_spaces' => FALSE到你的配置阵列,看看是否需要照顾的问题。默认情况下,它被设置为TRUE,但它只应该用下划线替换空格。它可能是文件上传类的CI错误。