Создать уникальные имена? - PullRequest
0 голосов
/ 15 ноября 2009

Я работаю над сайтом php, на котором мы должны загружать изображения от пользователей. Я должен переименовать этот файл для предотвращения конфликтов в имени изображения.

uniqid(rand(), true);
and adding a large random number after it.

Будет ли это работать отлично. Любые предложения .. ??

Это о генерации уникальных имен для изображения .....

Ответы [ 4 ]

7 голосов
/ 15 ноября 2009

Функция tempnam() создает файл с уникальным именем.

1 голос
/ 15 ноября 2009

Возьми md5 файла и используй его. IIRC, вероятность столкновения 1 в 64M. Если этого недостаточно, добавьте к нему метку времени, выраженную в секундах или миллисекундах. Таким образом, даже если будет сгенерирован дубликат md5, файлы будут приходить в течение одной секунды / миллисекунды для столкновения.

0 голосов
/ 15 ноября 2009

У вас есть два подхода в зависимости от того, насколько большой может быть ваша библиотека изображений: 1. для небольшого количества файлов я делаю это

<?php

$file = sanitize_file($file); // remove all no [az-09_] characters for safe url linking;
$file_md5 = $md5($file);
$file_extention = $md5($file);

// since I assume the file should belongs to someone you can do this
$file_name = $user_id . $file_md5 . $file_extension;

// then save the file

?>
  1. опция .... CacheMogul . Здесь вам нужно использовать свое воображение. но для огромного количества файлов это делает хороший осколок, поэтому вам не нужно беспокоиться о максимальном количестве или размере папки
0 голосов
/ 15 ноября 2009

Вы можете использовать Base36 для значения AutoIncrement из таблицы SQL (надеясь, что вы действительно используете таблицу SQL).

$filename = base_convert($last_insert_id, 10, 36);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...