Как опубликовать не Java-ресурсы, созданные во время выполнения на сервере Tomcat? - PullRequest
1 голос
/ 02 ноября 2011

У меня есть веб-приложение Java, работающее на Tomcat. Во время выполнения я создаю файлы изображений, которые хочу опубликовать на сервере Tomcat.

1 / Как я могу получить локальный URL, куда я хочу скопировать мои файлы изображений? (т.е. / mylocalpath / to / где / i / должен / хранить / файл /) /

2 / Как узнать URL-адрес, по которому другие машины могут получить доступ к этим общедоступным файлам? (т.е. http://mydomainname/myapp/myresource.png)

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Сохраните путь в init-param сервлета, строке JNDI или в файле свойств. (Или все, что предусмотрено вашей структурой, которая позволяет простую настройку.)

Создать сервлет / действие / контроллер / и т.д. это сопоставлено с известным URL. Либо передайте параметр с именем файла, либо сделайте имя файла частью URL. Потоковое содержимое файла обратно пользователю. (Для поиска найдите "image servlet".)

Имейте в виду тип файла MIME и установите соответствующий заголовок. При необходимости проверьте, имеет ли запрашивающий пользователь доступ к рассматриваемому файлу. (Есть несколько способов реализовать это.)

0 голосов
/ 06 ноября 2011

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

В файле "server.xml" Tomcat 6 я добавил эту строкув элементе :

<Context docBase="/mylocalpath/to/where/i/should/store/the/file" path="/uploads" />

Затем, когда я создаю свой ресурс, я копирую его в этот локальный каталог и довольно легко выясняю общедоступный URL: http://myserver/uploads/myfilename

Надеюсь на этоможет помочь другим людям.

(я даже думаю, что контекст можно определить в файле context.xml, включенном в WAR, а не в глобальную конфигурацию Tomcat, но для моих нужд было достаточно глобального определения).

...