Можно ли переименовать загруженные файлы на сервере, чтобы избежать столкновения имен?
Я хочу, чтобы на моем сайте было размещено несколько изображений. Пользователь может загружать изображения в качестве типа контента.
Если два пользователя создают контент и загружают изображения с одинаковым именем (myImage.png), будет ли старый файл изображения перезаписан на сервере (и, следовательно, обе записи контента будут иметь один и тот же файл изображения)?
Если да, то это довольно тревожно. Так что теперь мне интересно: есть ли модуль, который переименовывает загруженный файл, чтобы он не сталкивался с другими загруженными файлы?
Я искал пару из них, но точно не тестировал их, так как они, похоже, добавляют слишком много дополнительных функций, которые мне просто не нужны: мне нравится система загрузки файлов по умолчанию, которая поставляется с Drupal 7. Я просто хочу, чтобы это позволило избежать конфликтов имен (если это произойдет).
3 answers
Вам не нужно беспокоиться о переименовании изображений; Drupal делает это за вас по умолчанию:)
Допустим, если вы загрузите image1.jpg
, и снова кто-то другой сделает то же самое, второй файл будет переименован image1_0.jpg
.
Вы можете найти некоторую информацию о том, как кодировать изменение имен файлов в модуле Путь к файлу.
Файл (Поле) Пути позволяют автоматически сортировать и переименовывать загруженные файлы с использованием шаблонов замены на основе маркеров для поддержания хорошей чистоты файловой системы.
Также вы можете установить шаблон для ваших файлов, и со случайной или временной меткой он никогда не дублировался
Вы можете использовать сохранение hook_file_persave
function yourmodulename_file_presave($file) {
$parts = pathinfo($file->filename);
$file->filename = 'mystring_'.$file->uid .'_'. $file->timestamp . '.' . $parts['extension'];
}