2016-08-19 98 views
0

我試圖在上傳後重命名圖像。 我希望它是一個獨特的名字。上傳後唯一的文件名

我有這個類(在互聯網上找到):

http://pastebin.com/qQmC256A

我試圖編輯這樣的文件:

$upload_image = $target_path.basename($fileName); 

$upload_image = $target_path.basename(uniqid($fileName, rand())); 

但它給我只是一個文件,沒有擴展名..

+0

而且?聽起來像是對我有用? –

+0

是的,它工作。但它只是給我一個沒有擴展名的文件。我如何檢查圖像的擴展名? – tweetok

回答

0

還應該發生什麼? uniqid將產生類似:

php > echo uniqid('kittens.jpg', rand()); 
kittens.jpg57b72004c1a470.87520799 
php > echo basename(uniqid('kittens.jpg', rand())); 
kittens.jpg57b7201cdce2e9.40812361 

你不會得到擴展,因爲你打開文件的擴展名到文件名的「中間」的一部分。

也許這樣的事情會更好地工作:

$info = pathinfo($file); 
$file = $path . $info['filename'] . uniqid() . $info['extension']; 
+0

謝謝,這是工作。我只需要添加一個「。」在uniqid()之後。 – tweetok

0

在您提供有一個名爲$file_ext包含正是你需要的變量庫中的第26行。只要將其Concat的到$upload_image所以線32變爲:

$upload_image = $target_path.basename(uniqid($fileName, rand())).$file_ext;

即使如說here,我會得到這樣的擴展: $path = $_FILES['image']['name']; $file_ext = pathinfo($path, PATHINFO_EXTENSION);

因爲如果文件名是,對於例如,test.tar.gz它只需要.gz作爲擴展名。

如果你想使用這種方法,你可以用上面的代碼替換第22-24行。