2014-01-22 51 views
1

我是PHP的新手,我正在學習。每次將新圖像上傳到文件夾時,將圖像名稱添加1

我已經制作了一個基本腳本,您可以將圖像上載到服務器上的導演。我希望圖像名稱在最後得到一個數字,以便名稱不會被重複。

這是我的腳本加1名(我真的很糟糕,在「for循環」):

for(x=0; $imageName => 50000; x++){ 
$imageFolderName = $imageName.$x; 
} 

請告訴我,如果我這樣做是完全錯誤的。

+2

你的循環的終止條件有點奇怪......你確定你不想檢查'$ x'的值嗎? '$ x => 50000'? – Lix

+2

我認爲將圖片名稱的時間戳添加到一個值是很容易的。時間戳也相當獨特.. :) – Naruto

+0

當然,條件必須是$ x <= 50000,即50000是您要上傳圖片的最大值 – Reger

回答

1

這裏是爲了避免循環潛在的絕招:

$existingfiles = count(glob("files/*")); 
// this assumes you are saving in a directory called files! 
$finalName = $imageName.$existingfiles; 
+0

這真是個巧妙的把戲,謝謝! –

+0

只是想再次感謝你,因爲那也幫助了我另一個問題! –

2

添加到Niet的的答案,你可以做你的文件夾中的所有文件foreach循環,並在前面加上一個數字文件名像這樣:

<? 
    $directory = 'directory_name'; 
    $files = array_diff(scandir($directory), array('.', '..')); 
    $count = 0; 

    foreach($files as $file) 
    { 
     $count++; 
     rename($file, $count.'-'.$file); 
    } 
?> 

另外,您可以將文件重命名爲當它被上傳的時間戳和前面加上一些隨機字符添加到文件的rand()函數:

<? 
    $uploaded_name = 'generic-image.jpeg'; 
    $new_name = time().rand(0, 999).$uploaded_name; 
?> 

您需要在重命名之前和之後處理和移動上傳的文件,但是您將得到如何工作的一般要點。

+0

謝謝!我會測試那:) –

相關問題