Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

php check file name exist, rename the file

How do I check if file name exists, rename the file?

for example, I upload a image 1086_002.jpg if the file exists, rename the file as 1086_0021.jpg and save, if 1086_0021.jpg is exist, rename 1086_00211.jpg and save , if 1086_00211.jpg is exist, rename 1086_002111.jpg and save...

Here is my code, it only can do if 1086_002.jpg exist, rename the file as 1086_0021.jpg, maybe should do a foreach, but how?

//$fullpath = 'images/1086_002.jpg';

if(file_exists($fullpath)) {
    $newpieces = explode(".", $fullpath);
    $frontpath = str_replace('.'.end($newpieces),'',$fullpath);
    $newpath = $frontpath.'1.'.end($newpieces);
}

file_put_contents($newpath, file_get_contents($_POST['upload']));
like image 795
yuli chika Avatar asked Dec 12 '22 03:12

yuli chika


2 Answers

Try something like:

$fullpath = 'images/1086_002.jpg';
$additional = '1';

while (file_exists($fullpath)) {
    $info = pathinfo($fullpath);
    $fullpath = $info['dirname'] . '/'
              . $info['filename'] . $additional
              . '.' . $info['extension'];
}
like image 163
cmbuckley Avatar answered Dec 22 '22 01:12

cmbuckley


Why not just append a timestamp onto the filename? Then you won't have to worry about arbitrarily long filenames for files which have been uploaded many times.

like image 26
Scott C Wilson Avatar answered Dec 22 '22 01:12

Scott C Wilson