| Q | А
| ------------ | -----
| Версия Symfony | 3.3. *
| Версия пакета VichUploader | 1.6
Я ищу способ избежать перезаписи файла, когда пользователь загружает файл с тем же именем, что и файл, который уже существует и загружен на сервер.
Однако для этого я бы хотел, чтобы пользователь ничего не заметил, поэтому без изменения имени файла, который будет загружен.
Я пытаюсь сделать это через Namers, но не думаю, что есть способ.
Практически:
1) пользователь загружает файл с тем же именем, что и другой файл, уже загруженный и находящийся на сервере.
2) при загрузке оригинальное имя меняется на случайный идентификатор, но все в Back-End. (например, используя Symfony UploadedFile)
3) пользователь увидит имя файла, равное загруженному, не заметив никакой разницы.
Возможно?
Спасибо вам всем.
OrignameNamer
уже предоставляет такую возможность: он добавляет uniqid()
к исходному имени клиента.
Спасибо @garak , я решил использовать как uniqid (), сохраняя его в столбце slug, так и исходное имя, чтобы показать его пользователю. (который в этот момент ничего не заметит)
Закрываю этот выпуск, хорошая работа!
File Namer - решение для этого
На данный момент доступно несколько наименований:
Я лично использую HashNamer с MD5:
prodimage:
uri_prefix: /prodimages
upload_destination: '%kernel.project_dir%/public/prodimages'
namer:
service: Vich\UploaderBundle\Naming\HashNamer
options: { algorithm: 'md5', length: 30 }
https://github.com/dustin10/VichUploaderBundle/blob/master/docs/namers.md
Самый полезный комментарий
Спасибо @garak , я решил использовать как uniqid (), сохраняя его в столбце slug, так и исходное имя, чтобы показать его пользователю. (который в этот момент ничего не заметит)
Закрываю этот выпуск, хорошая работа!