Я не уверен, почему, но ваш каталог public/
не должен быть удален.
Если вы используете Webpack Encore, то содержимое public/build/
удаляется и создается снова при компиляции ресурсов. Но не public/
.
Для загрузки мы создаем каталог public/upload/
.
Затем большую часть времени мы устанавливаем некоторые глобальные переменные, которые позволяют нам сохранять только имя файла.
Глобальные переменные для Twig в config/packages/twig.yaml
, которые "root" будут в вашем public/
каталоге
twig:
globals:
app_ul_avatar: '/upload/avatar/'
app_ul_document: '/upload/document/'
И глобальные переменные для ваших контроллеров, хранилищ и т. Д. c в config/services.yaml
parameters:
app_ul_avatar: '%kernel.root_dir%/../public/upload/avatar/'
app_ul_document: '%kernel.root_dir%/../public/upload/document/'
Это удобно, потому что, как я только что сказал, вы можете сохранить только имя файла в базе данных.
Это означает, что если у вас есть папка public/upload/img/
, и Если вы также хотите создавать эскизы, вы можете создать public/upload/img/thumbnail/
, и в вашей базе данных ничего не изменится, и вам не нужно сохранять дополнительный путь.
Просто создайте новый глобальный app_ul_img_thumbnail
, и вы set.
Тогда все, что вам нужно сделать, это вызвать глобальные вызовы, когда они вам понадобятся, и связаться с именем файла:
В Twig:
{{ app_ul_avatar~dbResult.filename }}
Или в Контроллер:
$this->getParameter('app_ul_avatar').$dbResult->getFilename();