2013-04-21 10 views
13

समाप्त होने के लिए मौजूद संख्या में मौजूद है, तो यह अपलोड होने पर छवि के फ़ाइल नाम का नाम बदलने का प्रयास कर रहा है, अगर यह कहता है कि मेरा फ़ाइल नाम test.jpg है और यह पहले से मौजूद है तो मैं इसे test1.jpg के रूप में नामित करना चाहता हूं और फिर test2.jpg और इसी तरह से। कोड के साथ मैंने अपना फ़ाइल नाम बदलकर test1.jpg और फिर test12.jpg को ठीक करने पर कोई सलाह दी है, यह बहुत अच्छा होगा!PHP नाम बदलना फ़ाइल नाम अगर

पीएचपी

$name = $_FILES['picture']['name']; 
$actual_name = pathinfo($name,PATHINFO_FILENAME); 
$extension = pathinfo($name, PATHINFO_EXTENSION); 

$i = 1; 
while(file_exists('tmp/'.$actual_name.".".$extension)) 
{   
    $actual_name = (string)$actual_name.$i; 
    $name = $actual_name.".".$extension; 
    $i++; 
} 
+0

स्पष्ट एक बार, क्योंकि इसके क्या इस तरह की कुछ करके एक पाश इस्तेमाल किया चर $ actual_name, $ acutal_name = '' –

+0

आप '$ मैं' घ के साथ नाम 'while' पाश में .. परीक्षण कर सकते हैं के रूप में 'tmp /".$ actual_name। $ i।"। "एक्सटेंशन 'और थोड़ी देर के बाद' $ name' 'मान बनाएं' $ name =" tmp /".$ actual_name। $ i। "। $ extension' – dbf

उत्तर

30

यहाँ एक मामूली संशोधन मैं आप क्या चाहते हैं क्या करना चाहिए लगता है कि है:

$actual_name = pathinfo($name,PATHINFO_FILENAME); 
$original_name = $actual_name; 
$extension = pathinfo($name, PATHINFO_EXTENSION); 

$i = 1; 
while(file_exists('tmp/'.$actual_name.".".$extension)) 
{   
    $actual_name = (string)$original_name.$i; 
    $name = $actual_name.".".$extension; 
    $i++; 
} 
0

वहाँ सर्वर पर अपलोड करने से पहले PHP में छवि का नाम बदलने के लिए कई तरीके हैं। टाइमस्टैम्प, अद्वितीय आईडी, छवि आयामों और यादृच्छिक संख्या आदि को जोड़ना। आप उन्हें सभी here

सबसे पहले, जांचें कि होस्ट किए गए छवि फ़ोल्डर में छवि फ़ाइल नाम मौजूद है या नहीं, अन्यथा इसे अपलोड करें। जबकि पाश चेकों छवि फ़ाइल नाम से मौजूद है और जैसा कि नीचे दिखाया एक अनन्य ID जोड़ अगर ...

function rename_appending_unique_id($source, $tempfile){ 

    $target_path ='uploads-unique-id/'.$source; 
    while(file_exists($target_path)){ 
     $fileName = uniqid().'-'.$source; 
     $target_path = ('uploads-unique-id/'.$fileName); 
    } 

    move_uploaded_file($tempfile, $target_path); 

} 

if(isset($_FILES['upload']['name'])){ 

    $sourcefile= $_FILES['upload']['name']; 
    tempfile= $_FILES['upload']['tmp_name']; 

    rename_appending_unique_id($sourcefile, $tempfile); 

} 

चेक अधिक छवि renaming tactics

3

@Jason जवाब से प्रेरित होकर, मैं एक समारोह जो मैं छोटा समझा बनाया और अधिक पठनीय फ़ाइल नाम प्रारूप।

function newName($path, $filename) { 
    $res = "$path/$filename"; 
    if (!file_exists($res)) return $res; 
    $fnameNoExt = pathinfo($filename,PATHINFO_FILENAME); 
    $ext = pathinfo($filename, PATHINFO_EXTENSION); 

    $i = 1; 
    while(file_exists("$path/$fnameNoExt ($i).$ext")) $i++; 
    return "$path/$fnameNoExt ($i).$ext"; 
} 
संबंधित मुद्दे