Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create Random Folders - PHP

Tags:

php

I have developed an API integration, It contains multiple image/file uploads. There are name conflicts if multiple users uploads file with the same name.

I've planned to create dynamic folders with random names to fix this issue (as temp folder & will delete once the process has been done). Are there any methods/techniques available to generate random folders in PHP?

like image 245
Nikhil Avatar asked Jan 12 '13 04:01

Nikhil


2 Answers

For things like this, I've found the php function uniqid to be useful. Basically, something like this:

$dirname = uniqid();
mkdir($dirname);

And then just move the uploaded file to this directory.

Edit: Forgot to mention, the directory name is not random, but is guaranteed to be unique, which seems to be what you need.

like image 134
KaeruCT Avatar answered Oct 31 '22 23:10

KaeruCT


I guess that it is best to have a function that tries creating random folders (and verifying if it is successful) until it succeeds.

This one has no race conditions nor is it depending on faith in uniqid() providing a name that has not already been used as a name in the tempdir.

function tempdir() {
    $name = uniqid();
    $dir = sys_get_temp_dir() . '/' . $name;
    if(!file_exists($dir)) {
        if(mkdir($dir) === true) {
            return $dir;
        }
    }
    return tempdir();
}
like image 38
niekoost Avatar answered Nov 01 '22 01:11

niekoost