2011-11-27 55 views
1

我正在使用CodeIgniter框架編寫應用程序,並且正在利用CI文件上傳類將圖像文件從Web窗體上傳到服務器。代碼點火器文件上傳類 - 如何更改保存的文件名?

上傳的文件很好,但我希望能夠在服務器上以不同的唯一名稱保存它們。我想告訴文件上傳類將文件保存到服務器使用每個文件的不同,唯一的文件名,但我一直無法弄清楚如何做到這一點。

我已經檢查過該類的CI文檔,我發現的所有內容都是可以使用該類來加密文件名,但我不相信這會給我一個唯一的文件名,它只是加密它。

我已經在應用程序中分配一個唯一文件名的功能,所以我只需要弄清楚如何讓文件上傳類在每次保存文件時接受備用文件名。任何人都知道是否有可能做到這一點?

回答

5

您可以設置配置變量以實現您提出的兩件事。下面的配置變量可以在manual page

下找到適合您上傳的文件

FILE_NAME沒有期望中的文件名

如果設置的CodeIgniter將上傳的文件重命名爲這名設置文件名。文件名中提供的 擴展名也必須是允許的文件類型。

確保文件名是唯一

覆蓋FALSE TRUE/FALSE(布爾)

如果設置爲true,如果具有相同的名稱作爲一個文件你是 上傳存在,它將被覆蓋。如果設置爲false,則會在文件名後追加 ,如果存在另一個具有相同名稱的文件。

而且你可以按照如下

$config['file_name'] = 'myfile'; 
$config['overwrite'] = false; 

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

// Alternately you can set preferences by calling the initialize function. Useful if you auto-load the class: 
$this->upload->initialize($config); 
1

您可以設置文件名設置這些配置變量:

 
$newFileName = $_FILES['some_field']['name']; 
$fileExt = array_pop(explode(".", $newFileName)); 
$filename = md5(time()).".".$fileExt; 

//set filename in config for upload 
$config['file_name'] = $filename; 

希望它可以幫助

+1

我剛剛檢查了文件上傳類,上線218開始它使用上傳的文件擴展名,如果一個ISN沒有給出。因此,您不需要在代碼中使用array_pop位。 –

4

如果要更改上傳文件名稱,試試這個:

$newFileName = $_FILES['userfile']['name']; 
// You can setfilename in config for upload 
$config['file_name'] = $new_name; 
+0

thanks.it適合我的朋友 – iJay

0

如果你想更改上傳文件名

$fname = "Set File Name What You Want"; 


$config['file_name'] = $fname; 
$config['overwrite'] = false; 
相關問題