2014-10-28 3 views
0

Какой метод имен файлов лучше?Используйте MD5 или произвольно для именования файлов?

Метод 1:

  • MD5 строка/файл (любой), мы получаем результат, используя [0-9a-Z] символы с длиной 32 строки
  • (10 + 26)^32 комбинаций

Способ 2 as outlined here:

  • Использование PHP для случайной генерации набора символов [0-9a-Za-Z] символы с 32 Длина строки
  • (10 + 26 + 26)^32 комбинаций

Очевидно метод 2 имеет больше комбинаций и хаотичность, но почему люди не используют метод 2, но метод использования 1?

+1

Поскольку некоторые глупые файловые системы не имеют имена файлов с учетом регистра, а также потому, что хэш MD5 имеет большее значение, чем просто случайный, т.е. может служить в качестве отпечатка пальца/контрольной суммы файла. –

+0

какая ситуация нам нужна для проверки суммы загружаемого файла? –

+0

Это позволяет вам проверить, что содержимое не было изменено. –

ответ

0

Я думаю, по двум причинам:

  1. Некоторые файловые системы (например, VFAT, FAT32) не поддерживает имена файлов с учетом регистра.
  2. Хеш MD5 имеет значение, не являющееся случайным, то есть оно может служить для отпечатка пальца/контрольной суммы файла. Это может вам помочь:
    • убедитесь, что содержимое файла не изменилось с момента его создания;
    • предотвращает сохранение дублированного содержимого.
+1

спасибо @Robby Cornelissen –

+0

Я сомневаюсь в использовании для предотвращения хранения дублированного контента; т.е. если 2 пользователя загружают одно и то же изображение, и один из пользователей хочет удалить изображение на сервере, так что я бы удалил изображение общего доступа? –

+0

@SacbmcpdSamuel Этот аргумент не содержит воды. Было бы тривиально проверять, до сих пор ли ссылка на изображение еще ссылается другим пользователем, прежде чем принять решение о его удалении. Это то же самое, что просить, чтобы все закончили есть, прежде чем очистить стол. –

0

3 причины.

  • Не многие люди поняли рандов() дает более хаотичность
  • md5 работает в большинстве случаев. Исторически это использовалось как уникальный идентификатор для вещей, поэтому люди любят его использовать с самого своего общего времени.
  • Как заметил @Robby, некоторые операционные системы, такие как окна, не поддерживают имена файлов, чувствительных к регистру. aaAAaa.txt и aaaaaa.txt две разные вещи на системе UNIX но samething на системе окон
+0

спасибо @ Krimson –