Создание уникального имени файла (хеш) для загруженных пользователем изображений - PullRequest
5 голосов
/ 14 февраля 2012

У меня есть веб-приложение, которое позволяет пользователям загружать изображения.Я храню изображения в корзине S3 и даю им все имена файлов, которые по сути являются результатом MD5 (session_id + unix_timestamp).Есть ли подводные камни в этом методе создания уникальных имен файлов изображений?

Ответы [ 2 ]

6 голосов
/ 14 февраля 2012

Я бы посоветовал хранить файлы в каком-либо формате папок, поскольку многие клиенты S3 на основе пользовательского интерфейса будут работать намного лучше, если в одной папке не будет 200 000 файлов. Также не мешало бы также добавить правильное расширение и тип пантомимы к загруженным файлам. Таким образом - если вы решите предоставить их напрямую с S3 на веб-страницу и т. Д. - они будут готовы к работе.

2012/2 / 6gtbb88uytgfrses4.png

Также вы можете указать размеры в названии ...

2012/2 / 6gtbb88uytgfrses4_600x800_.png

4 голосов
/ 14 февраля 2012

С точки зрения уникальности, вы должны быть в безопасности. При использовании MD5 маловероятно (хотя и возможно) столкновение.

Но если вы хотите предоставить пользователям возможность загрузки этих файлов, я предполагаю, что вы храните исходные имена файлов в другом месте (в базе данных или аналогичной). Это правильно? Если это так, вы можете также хранить идентификатор сеанса и временную метку в одном месте и просто использовать GUID для имени файла (вместо предоставления их для вашей хэш-функции MD5), что будет более безопасно от коллизий. точка зрения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...