Можно ли переименовать загруженные файлы на сервере, чтобы избежать столкновения имен?


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

Если два пользователя создают контент и загружают изображения с одинаковым именем (myImage.png), будет ли старый файл изображения перезаписан на сервере (и, следовательно, обе записи контента будут иметь один и тот же файл изображения)?

Если да, то это довольно тревожно. Так что теперь мне интересно: есть ли модуль, который переименовывает загруженный файл, чтобы он не сталкивался с другими загруженными файлы?

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

 2
Author: Omega, 2012-09-19

3 answers

Вам не нужно беспокоиться о переименовании изображений; Drupal делает это за вас по умолчанию:)
Допустим, если вы загрузите image1.jpg, и снова кто-то другой сделает то же самое, второй файл будет переименован image1_0.jpg.

 5
Author: AjitS, 2012-09-19 05:06:41

Вы можете найти некоторую информацию о том, как кодировать изменение имен файлов в модуле Путь к файлу.

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

 2
Author: mohit_rocks, 2012-09-19 04:58:58

Также вы можете установить шаблон для ваших файлов, и со случайной или временной меткой он никогда не дублировался

Вы можете использовать сохранение hook_file_persave

function yourmodulename_file_presave($file) {
  $parts = pathinfo($file->filename);
  $file->filename = 'mystring_'.$file->uid .'_'. $file->timestamp . '.' . $parts['extension'];
}
 0
Author: Yuseferi, 2015-04-28 10:03:06