Jump to content

Recommended Posts

hi ,

i have upload form , each time user upload a file i must rename file to unique name  , but i don't want to use random number to access this images later .  so i write this function but this not work and also i used HTTP_UPLOAD Pear to upload image . is there anyway to determind file name on the server ? any function ? i can't find it .

 

first i check if the file exist and the number is 1 for example change file name to 2 . is this the regular form to do this ?

 


<?php 
$fp = PROFILE.$id ; 

	function check_file($fp , $file ){
		if(file_exists($fp.'1'.'.jpg')){
		$file->setName('2'.'jpg');
		}elseif(file_exists($fp.'2'.'.jpg')){
		$file->setName('3'.'jpg');
		}elseif(file_exists($fp.'3'.'.jpg')){
		$file->setName('4'.'jpg');
		}elseif(file_exists($fp.'4'.'.jpg')){
		$file->setName('5'.'jpg');
		}elseif(file_exists($fp.'5'.'.jpg')){
		$file->setName('6'.'jpg');
                                                       }elseif(file_exists($fp.'6'.'.jpg')){																		
	$file->setName('7'.'jpg');
					}elseif(file_exists($fp.'7'.'.jpg')){																		
		$file->setName('8'.'jpg');		
		}elseif(file_exists($fp.'8'.'.jpg')){				
		$file->setName('9'.'jpg');
		}elseif(file_exists($fp.'9'.'.jpg')){
		$file->setName('10'.'jpg');
		}
	}

	if(is_dir(PROFILE.$id)){

	if($file->isValid()){
	check_file($fp , $file);	
	$file->setName('1'.'.jpg');

	$moved = $file->moveTo($fp);
	if(!PEAR::isError($moved)){
	echo '<div id="notic">file uploaded  </div>';
	}else{
	echo 'error during file upload ' ; 
	}
		}
?>

Link to comment
https://forums.phpfreaks.com/topic/125595-upload-file-with-uniqe-name/
Share on other sites

Do they need to be in form of 1, 2, 3, 4 etc ??

 

If not just create yourself a naming formula like..

 

md5(TodaysDate_TimeToTheSecond_Random4DigitNum)

 

Chances are like 1 in 10 thousand per second that someone will ever get the same number.. or something daft!

 

If they do need to be in order, could loop through, eg:

$x = 1;

while ( !file_exists($x . '.jpg')) {
    $x++;
}

$filename = $x . '.jpg';

 

..not tested though!

 

If you had a lot of uploads however, and it gets to like 300.jpg, or even 3000.jpg, don't wanna have to loop through each time. so could use a database or flatfile or something to store the current count...

 

 

Adam

Another solution, although I don't recommend it in-case you are deleting files.

 

$files = count(glob("path/to/dir/*.*")) + 1; //You need the *.* at the end. It gets any file with any extension, so it doesn't get folders.

 

Although, as I mentioned, if you delete files it could get messy.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.