Устранить перезапись файлов - PullRequest
0 голосов
/ 31 марта 2012

У меня есть следующий код, который загружает изображения в учетную запись rackspace cdn.

                    error_reporting(E_ALL);
                    ini_set('display_errors', 1);

                    // include the API
                    require("cloudfiles.php") ;

                    // cloud info
                    $username = ''; // username
                    $key ='' ; // api key
                    $container = ''; // container name

                    ob_start();


                    $localfile = $_FILES['media']['tmp_name'];
                    $filename = $_FILES['media']['name'];



                    ob_flush();

                    // Connect to Rackspace
                    $auth = new CF_Authentication($username, $key);
                    $auth->authenticate();
                    $conn = new CF_Connection($auth);

                    // Get the container we want to use
                    $container = $conn->create_container($container);

                    // store file information

                    ob_flush();

                    // upload file to Rackspace
                    $object = $container->create_object($filename);
                    $object->load_from_filename($localfile);

                    $uri = $container->make_public();
                    //print "Your URL is: " . $object->public_uri();

                    $imagePageUrl = $object->public_uri();

                    //echo '<mediaurl>' . $imagePageUrl . '</mediaurl>';


                    ob_end_flush();


                    //echo '<mediaurl>' . $imagePageUrl . '</mediaurl>';

                    echo '<mediaurl>http://url.com/'.$filename.'</mediaurl>';

Таким образом, каждый раз, когда я загружаю изображение, скажем, image.jpg, оно перезаписывает предыдущий файл image.jpg в контейнере.Я хочу предотвратить это.Даже если имя файла совпадает, есть ли способ преобразовать имя файла в произвольное имя, символы и затем загрузить его?

Помогите плз.

Ответы [ 3 ]

1 голос
/ 31 марта 2012

Чтение других ответов, в то время как подход time() кажется хорошим, он не предоставляет реальных уникальных идентификаторов, его точность составляет всего 1 секунду.

Но PHP обеспечивает способ получения реальных уникальных идентификаторов, что является более точным и обеспечивает лучшее решение.Вы можете использовать его как:

$filename=uniqid().$_FILES['media']['tmp_name'];

Конечно, изменив $_FILES['media']['tmp_name'] на то, что вы предпочитаете.

0 голосов
/ 31 марта 2012

ок ... какой-то код отсутствует ... но вы можете попытаться дать новое имя файла (загруженное изображение) ... одно имя, которое является уникальным простой пример:

 $filename = time()."-".$_FILES['media']['tmp_name'];

таким образом ваши изображения будут именоваться как '1333221458-my_image.jpg'

0 голосов
/ 31 марта 2012

Вы можете добавить время к имени файла, поэтому при условии, что у вас всегда будет .jpg:

$filename=explode(".",$filename);
$filename[0].="_".time();
$filename=implode(".",$filename);
...