Как создать уникальное имя для файла


 

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

Что мы делаем?

1. Сначала, выделим расширение файла или тип файла. Это как вам угодно. Вы, наверняка, в курсе, что все файлы в конце имеют окончание.
Например:

a) Графические файлы: рисунки(png,bmp), фотографии(jpg,jpeg), анимационные баннеры(gif) и так далее;
b) Документы word(doc, doxs, rtf, xml и т.д.);
c) Файлы на php, js, mysql…Мы не сможем здесь перечислить все расширения мира файлов, и к тому же это не нужно. А, в общем, вы поняли, что мы выделяем расширение, которое стоит в конце названия файла после точки.


2. Воспользуемся простой функцией выдачи времени time(); которая выдает текущее время в секундах.
3. Затем, полученное число перекодируем в хеш-код при помощи функции md5(); получим длинный хеш код.
4. Хэш-код, вы, можете перевести либо в верхний регистр или в нижний. Здесь вы выбираете сами исходя из ваших предпочтений.
5. Но название становится слишком длинным. Поэтому, обрезаем полученный хеш-код до десяти или до двенадцати символов. Для этого воспользуемся функцией substr($str,0,10); для обрезания строк.
6. Вот мы и получили укороченное, но абсолютно уникальное имя для нашего файла, который мы закачали на сервер.
7. Теперь мы скопируем временный файл $_FILES[‘myfile’][‘tmp_name’], который создали при передачи файла на сервер и скопируем его в нужную директорию. При этом мы задаем ему наше уникальное имя и прописываем в конце его расширение, которое мы выделяли в пункте 1.
 

А код следующий:

Вот и все.

Существуют и другие способы генерации уникального имени файла. Например, при загрузке сразу нескольких файлов такая функция может не сработать. Потому, что зависима по времени в секундах. А за одну секунду нам нужно переименовать сразу десять или двадцать файлов. Тогда можно применить функцию microtime(); Можно, для большей уникальности, смешать где нибудь в середине названия файла и первоначальное текущее название файла. Для этого, обработаем название файла через функцию md5();

Затем обрезаем его до пяти символов и подставляем в название файла. Так же на выбор либо в начале, в середину или в конце. У меня где - то есть даже специально написанная функция. Правда, выдает слишком длинное имя и служит для других целей. Но для переименования подойдет идеально.

Следите за выпусками статей. Скоро расскажу об этом, обязательно.
 

Добавить комментарий


( ! ) Ф.И.О.
( ! ) Текст сообщения: (Не больше 5000 знаков)

( ! )Введите текст с картинки :
Обновить код
Положительный отзыв Положительный отзыв
Отрицательный отзыв Отрицательный отзыв



Коллекция скриптов и модулей   © 2017