2011-04-20 37 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錯誤。