2014-12-14 8 views
0

Если я хочу связать контент в базе данных с файлом, что я могу использовать для уникальной ссылки на файл в базе данных, отличной от имени файла или имени даты создания/изменения, которое может измениться. Есть ли что-то еще, что уникально для файла, который не изменится и может использоваться для ссылки на файл в базе данных?PHP Уникальный идентификатор файла

Я хочу ссылаться на данные контента db, которые соответствуют медиафайлу m3u8, поэтому при воспроизведении файла извлекается и отображается содержимое db. Я хочу иметь возможность изменять имя файла m3u8 и изменять его содержимое, поэтому мне нужно ссылаться на файл, используя что-то другое, кроме имени файла или mtime.

+0

Создайте уникальный идентификатор или сделайте имя файла постоянным. – Daniel

+0

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

+0

Имя файла - его ** полный путь ** - это единственный атрибут, который имеет файл, который однозначно идентифицирует его (в файловой системе). Если вам нужно что-то еще, вы должны объединить этот новый метод с именем файла. Если вы хотите генерировать уникальные имена файлов, обратитесь к функции [tempnam] (http://php.net/manual/en/function.tempnam.php). –

ответ

1

Я, вероятно, собираюсь голосовать, но мне просто нужно поделиться.

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

Допустим, что имя файла super-awersome-pdf-file.pdf. Я добавляю time() (это строка) перед ним, затем некоторые другие вещи. Это имя файла становится уникальным идентификатором. Кроме того, я также храню информацию в таблице базы данных, чтобы дать ей еще один уникальный идентификатор. Поэтому у меня есть две вещи для работы.

Сохраняя имя файла менее чем на 60-70 символов, вы можете сделать несколько уникальных имен файлов таким образом. Затем вы можете добавить информацию об этом в базу данных.

Pro: Почти никогда вы получите дубликат Имя файла

Con: однако это может создавать дубликаты файлов, так как система будет видеть, что два файла имеют разные имена файлов.

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

Надеюсь, это поможет.

+0

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

Смежные вопросы