Pete Naylor
Pete Naylor

Reputation: 786

Upload file with PHP using a random temporary filename

I have a piece of code that uploads a file using it's current file name which is OK unless there is a file already on the server with that name and extension. How can I modify my code so that it uploads it with a random temporary file name before it renames it?

Here's my code:

if(!empty($_FILES['file']['name'])) {
copy($_FILES['file']['tmp_name'], WEB_UPLOAD."/pdf/".$_FILES['file']['name']) or die("Error uploading file.");
$ext = strtolower(substr($_FILES['file']['name'], strrpos($_FILES['file']['name'], ".")));
$filename = $url.$ext;
rename(WEB_UPLOAD."/pdf/".$_FILES['file']['name'], WEB_UPLOAD."/pdf/".$filename);       
mysql_query ("UPDATE downloads SET file ='".$filename."' WHERE id = '".$insertid."'") or die (mysql_error());
}

Thank you for your continued help! Pete

Upvotes: 0

Views: 459

Answers (2)

M I
M I

Reputation: 3682

if(!empty($_FILES['file']['name'])) {
    $targetFile = time().$_FILES['file']['name'];
    copy($_FILES['file']['tmp_name'], WEB_UPLOAD."/pdf/".$targetFile) or die("Error uploading file.");
    $ext = strtolower(substr($_FILES['file']['name'], strrpos($_FILES['file']['name'], ".")));
    $filename = $url.$ext;
    rename(WEB_UPLOAD."/pdf/".$targetFile , WEB_UPLOAD."/pdf/".$filename);       
    mysql_query ("UPDATE downloads SET file ='".$filename."' WHERE id = '".$insertid."'") or die (mysql_error());
}

With file name added current time stamp so file name will be unique.

Upvotes: 1

WebNovice
WebNovice

Reputation: 2220

//get the extension
$ext = strtolower(substr($_FILES['file']['name'], strrpos($_FILES['file']['name'], ".")));
//generate random name
$random_name = uniqid();
copy($_FILES['file']['tmp_name'], WEB_UPLOAD."/pdf/".$random_name . '.' . $ext) or die("Error uploading file.");

Now do whatever you want with it. The saved filename will be $random_name.'.'.$ext

Upvotes: 1

Related Questions