2012-04-24 69 views
10

我有以下代碼

$image_path = $_FILES["p_image"]["name"].time(); 

它名字的文件image02.jpg1335279888

,但我希望它被命名爲image02_1335279888.jpg

我該如何做到這一點?

回答

26
$path_parts = pathinfo($_FILES["p_image"]["name"]); 
$image_path = $path_parts['filename'].'_'.time().'.'.$path_parts['extension'] 
+7

@ user521180如果你這樣做是爲了兩個文件具有相同的名稱不會覆蓋彼此,那麼你可以考慮使用microtime中(真) ;而不是時間()。否則,在同一秒內以相同名稱上傳的2張圖像將被覆蓋。考慮一個用戶上傳兩個圖像,這兩個圖像都稱爲「image.jpg」。 – HappyTimeGopher 2012-04-24 15:19:11

+1

您還需要在其中添加下劃線,以便獲得原始文章中提到的確切命名約定:$ image_path = $ path_parts ['filename']。「_」。microtime(true)。'。 」。$ path_parts [ '延伸']; – Squig 2012-04-24 15:29:22

+0

@Squig謝謝指出, – Sethunath 2012-04-24 15:32:48

1

您可以檢查這一項:

$file = $_FILES["p_image"]["name"]; 
$array = explode('.', $file); 
$fileName=$array[0]; 
$fileExt=$array[1]; 
$newfile=$fileName."_".time().".".$fileExt; 
+0

應該不是'$ newfile = $ filename。 '_'。時間() 。 '' 。 $ fileExt;' – RiggsFolly 2015-02-20 10:21:35