Я написал небольшое веб-приложение, используя Grails. Полученный военный файл развертывается на сервере приложений Tomcat.
Приложение имеет функцию загрузки вложений. Я решил сохранить загруженные файлы на диск (вместо хранения больших двоичных объектов в БД).
Сначала я выбрал путь к файлу внутри webapp-dir для хранения файлов, но потом понял, что этот каталог будет перезаписываться при каждом развертывании нового файла войны.
Существуют ли рекомендации для "где хранить загруженные файлы в вашей локальной файловой системе"?
Спасибо за вашу помощь.
4 ответа
AlphaOne, мы делаем что-то похожее на то, о чем вы просите, но мы используем веб-сервер Apache перед Tomcat. Берем полный путь из конфиг файла и пишем в него. Произнесите «/tmp/branding». Затем мы также берем URL-адрес для этого местоположения из файла конфигурации (например, «myapp/branding») и используем его в наших GSP. Затем в Apache мы сопоставляем запросы приложений для этого URL-адреса («myapp/branding»), чтобы перейти непосредственно к местоположению файла, минуя Tomcat.
Создайте отдельный проект для загрузки и передайте имя пользователя для создания папки для конкретного пользователя. Укажите ссылку на этот проект из основного проекта, когда пользователь захочет загрузить файлы.
Я думаю, вы ищете лучшее практическое решение. Ну, на самом деле их нет, но есть места, куда их не следует помещать. Я предполагаю, что это среда UNIX.
Например:
- $CATALINA_HOME. Просто оставьте папку приложения такой, какая она есть, не засоряйте ее загружаемыми файлами.
- / тмп . Никогда не знаешь, кто будет это убирать.
Хотя я не уверен, что это заблокированная спецификация, вы можете посмотреть: структура каталогов linux.
Как я прочитал, у вас есть 3 варианта:
- Если Tomcat запускается с использованием выделенного пользователя -> Домашний каталог пользователей. Например, ~/Fileuploads/имя_приложения
- Поскольку var можно рассматривать как растущий каталог данных приложения. Например: /var/Fileuploads/имя приложения
- Оставьте это системному администратору. Ознакомьтесь с этим: Внешняя конфигурация Grails
Удачи!
Я бы рекомендовал использовать переменную среды для хранения местоположения или, что еще лучше, использовать переменную среды для установки местоположения вашего файла свойств конфигурации и установки там свойства. Таким образом, расположение становится настраиваемым группой операций, которая должна заниматься вопросами файловой системы/конфигурации.
Похожие вопросы
Связанные вопросы
Новые вопросы
tomcat
Используйте этот тег для вопросов об Apache Tomcat (или просто Tomcat, ранее также Jakarta Tomcat), который является контейнером сервлетов с открытым исходным кодом, разработанным Apache Software Foundation (ASF). Большинство вопросов также должны включать тег, определяющий операционную систему.