Как назвать загружаемые изображения от пользователей? - PullRequest
2 голосов
/ 18 сентября 2011

Мне было интересно, как мне назвать загрузку изображений с помощью PHP и MySQL, следует ли использовать в качестве имени изображения номер автоприращения, например, 1.gif, или я должен использовать некоторые случайные числа или что-то в этом роде. Я думал, что авто приращение было лучше. Но что будет лучше?

Ответы [ 5 ]

3 голосов
/ 18 сентября 2011

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

  • Это всегда будет безопасное имя файла (целое число)
  • Он всегда будет уникальным
  • Нет необходимости хранить имя файла в БД или беспокоиться о его очистке.
  • Это будет как можно меньше.

Почему бы мне не использовать имя пользователя / идентификатор пользователя, как предлагали другие:

  • Нет никакой пользы и нет причин выставлять идентификатор пользователя в имени файла, если вам это не нужно.
  • Нет необходимости очищать его для разрешенных символов, что может даже привести к тому, что у нескольких пользователей будет одно и то же имя «безопасный файл».
  • Имена пользователей могут меняться, поэтому это не всегда имеет смысл, и вам не нужно переименовывать файлы, если вы хотите, чтобы они совпадали.

Почему бы мне не использовать исходное имя файла в любой форме:

  • Там нет никакой пользы.
  • Вы должны очистить его для разрешенных символов.
  • Будут дубликаты.

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

Если в дальнейшем вы захотите «красивые» имена файлов, вы можете использовать .htaccess, чтобы переписать запросы и / или вывести ваши изображения с помощью php-скрипта, который также имеет преимущество проверки разрешений и еще много чего, если вы нужно это.

1 голос
/ 18 сентября 2011

А как же

md5(microtime()) 

Это довольно уникальный

0 голосов
/ 18 сентября 2011

Мне нравится использовать комбинацию автоматически увеличивающегося идентификатора и имени файла.

Так что, если я загружу изображение my_photo.jpg и оно будет сохранено с идентификатором 5, я бы сохранил его как 5_my_photo.jpg

Таким образом, исходное имя файла и расширение сохраняются, и я могу доставить его пользователю без префикса id, если захочу.

0 голосов
/ 18 сентября 2011

Хороший способ присвоения имен изображениям - добавить имя пользователя к значению автоинкремента, дополненному слева нулем, например, «00000027MyPic.jpg».

0 голосов
/ 18 сентября 2011

, если вас беспокоит уникальность изображения, сохраните его как time().$extention.

Я также предпочитаю вводить имя пользователя в качестве префикса, но это только я, нет причин делать это.

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