powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / хранение файлов
25 сообщений из 152, страница 2 из 7
хранение файлов
    #38869939
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
продублирую решение - для java8

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?xml version="1.0" encoding="UTF-8"?>
<Context  path="/mo"  >
   
    <Resources>
        <PostResources className="org.apache.catalina.webresources.DirResourceSet"
                   base="c:\Catalina\mo\full" webAppMount="/dataFiles" />
    </Resources>
  
</Context>




http://mikusa.blogspot.ru/2014/07/tips-on-migrating-to-tomat-8-resources.html
...
Рейтинг: 0 / 0
хранение файлов
    #38870010
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как получить эти значения в коде?
...
Рейтинг: 0 / 0
хранение файлов
    #38870025
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,
у меня 2 сервера:
Основной - здесь генерируются страницы, работа с БД и т.д.
Сервер контента - здесь храниться документы, который заливает пользователь.

Что бы залить контент основной сервер генерирует ссылку на сервер контента http://servercontent/MyApp/upload?docId=12344&expiredTime=12341234&key=q1234dqwe3214

docId - ИД документа который заливает
expiredTime - время (в миллисекундах Date.getTime()) до которого актуальна ссылка (я ставлю +1 день new Date().getTime() + 1000*60*60*24),
key - проверочный ключ это Md5 от docId + expiredTime + соль. О соли знают только сервера.

сервлет upload проверяет ключ и сохраняет файл в файловую систему в D:\myFiles


что бы получить контент основной сервер также генерирует ссылку http://servercontent/MyApp/content/fileName.doc?expiredTime=12341234&key=q1234dqwe3214
смысл параметров такой же как и у загрузки.

Сервлета для выгрузки у нас нет, ссылка идет на статический ресурс. Для проверки доступа используется фильтр.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
@WebFilter(filterName="DownloadFilter", urlPatterns="/content/*")
public class DownloadFilter implements Filter {

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;

        try {
            String time = servletRequest.getParameter("expiredTime");
            String key = servletRequest.getParameter("key");

            String uri = request.getRequestURI();
            String[] items = uri.split("/");
            String fileName = URLDecoder.decode(items[items.length - 1],"UTF-8");
            if (!FileStoreUtils.validateDownload(fileName,time,key)) {
                throw new IllegalAccessException("key is invalid");
            }

            filterChain.doFilter(request,response);
        } catch (IllegalArgumentException e) {
            response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
        } catch (IllegalAccessException e) {
            response.setStatus(HttpServletResponse.SC_FORBIDDEN);
        } catch (Exception e) {
            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
        }
    }
 ...
}



по ссылке http://servercontent/MyApp/content/fileName.doc
сервер будет искать файл в {tomcat_home}\webapp\MyApp\content\filename.doc, хотя файл у нас лежит в D:\myFiles\fileName.doc
Для того что бы он искал в D:/myFiles/ нужно в приложение добавить context.xml в webapp/META-INF/context.xml такого содержания

Код: xml
1.
2.
3.
4.
<?xml version="1.0" encoding="UTF-8"?>
<Context aliases="/content=D:\myFiles\">

</Context>



aliases="/content=D:\myFiles\" - вот эта строчка говорит что при URL по пути /content ( http://servercontent/MyApp/content/* ) искать файлы в D:\myFiles\

я из примеров много что вырезал, поэтому они не совсем валидные. но смысл думаю понятен.
...
Рейтинг: 0 / 0
хранение файлов
    #38870027
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
olzhas,

у меня tomcat7, для 8 версии не знаю как настраивать.
...
Рейтинг: 0 / 0
хранение файлов
    #38870059
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olzhas
спасибо, идея понятна, достаточно интересная, "кроссдоменная передача данных" :)

как это реализовать на java8 я привел выше.
у меня теперь другая проблема - как прочитать инфу из context.xml...
чтоб записать файлы в нужное место.
...
Рейтинг: 0 / 0
хранение файлов
    #38870101
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

Я не стал заморачиваться на эту тему и храню эту информацию прямо в классе загрузки. Да, не хорошо, работает ну и ладно.
...
Рейтинг: 0 / 0
хранение файлов
    #38870242
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поднимаю ...
кто может помочь?
...
Рейтинг: 0 / 0
хранение файлов
    #38870265
Dim666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Зачем вам читать что-то из context.xml?
Если нужно узнать реальный путь директории, на которую вы ссылаетесь через alias-ы и т.д., то для примера конфигов, что привёл olzhas, достаточно в init() сервлета/фильтра например сделать
Код: java
1.
String realPath = config.getServletContext().getRealPath("/content/");



Оно вернёт строку "D:\myFiles\".
...
Рейтинг: 0 / 0
хранение файлов
    #38870286
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня сделано так:
создал папку на сервере в корне, которую никто не трогает.
Заливаю туда файлы и одновременно пишу в базу название файла, разные другие параметры (в частности уровень доступа к файлу на уровне приложения, типа 1,2,3 уровни доступа), так же прописываю путь.
В зависимости от места загрузки файла в приложении, то есть в пользовательском интерфейсе, в путь добавляет что-то типа айдишников того или иного, к чему привязывается файл.
То есть, например, клиенту с айди 223 "прикрепляется" файл файл.doc.
получаем путь "/папка_в_корне/contractors/223/файл.doc"
В базу пишется название, этот путь что выше, ну и уровень доступа пользователя, к примеру, файлы с уровнем 3, не показываются в приложении в интерфейсе пользователю с уровнем доступа 2 и ниже. Ну это так - лирика :)
При выборе какого-либо клиента, в другой таблице формируется список доступных файлов на сервере, список берется из базы.
Потом выбираем какой-либо пункт в списке файлов и качаем его, путь уже известен.
В webapps ничего не кладу.
...
Рейтинг: 0 / 0
хранение файлов
    #38870288
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А да, если имена файлов совпадают, имя файла меняется, добавляется 1,2,3 и т.д.
...
Рейтинг: 0 / 0
хранение файлов
    #38870409
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim666вадя,

Зачем вам читать что-то из context.xml?
Если нужно узнать реальный путь директории, на которую вы ссылаетесь через alias-ы и т.д., то для примера конфигов, что привёл olzhas, достаточно в init() сервлета/фильтра например сделать
Код: java
1.
String realPath = config.getServletContext().getRealPath("/content/");



Оно вернёт строку "D:\myFiles\".
то что нужно ! Спасибо!

2Nixic
ну для несовпадения имен у меня генерится GUI :)
насчет разграничения прав - тут вариантов море.
в моём случае это всё нужно чтоб не потереть файлы при деплое.
...
Рейтинг: 0 / 0
хранение файлов
    #38870484
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
теперь вопрос с другой стороны - а как задать реальны путь, ведь в разных осях от разный...
не только по содержанию, но и по форме.
а если задать оба вида - то приложение просто не диплоится...
...
Рейтинг: 0 / 0
хранение файлов
    #38870520
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяв моём случае это всё нужно чтоб не потереть файлы при деплое.
ты уверен, что все не теряют файлы только по тому, что пишут в корень С: или D:?
...
Рейтинг: 0 / 0
хранение файлов
    #38870550
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадяв моём случае это всё нужно чтоб не потереть файлы при деплое.
ты уверен, что все не теряют файлы только по тому, что пишут в корень С: или D:?
не понял фразу...
как понял - мне по барабну куда будет писаться,главное чтоб было не в webapps, абсолютные пути можно прописать хоть в web.xml хоть в singleton.
проблема счас в том что в окнах и никсах по разному
...
Рейтинг: 0 / 0
хранение файлов
    #38870556
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот http://tomcat.apache.org/tomcat-8.0-doc/api/org/apache/catalina/webresources/DirResourceSet.html
DirResourceSet

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public DirResourceSet(WebResourceRoot root,
                  String webAppMount,
                  String base,
                  String internalPath)

    Creates a new WebResourceSet based on a directory.

    Parameters:
        root - The WebResourceRoot this new WebResourceSet will be added to.
        webAppMount - The path within the web application at which this WebResourceSet will be mounted. For example, to add a directory of JARs to a web application, the directory would be mounted at "/WEB-INF/lib/"
        base - The absolute path to the directory on the file system from which the resources will be served.
        internalPath - The path within this new WebResourceSet where resources will be served from.

только что-то не могу понять
...
Рейтинг: 0 / 0
хранение файлов
    #38870595
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадякак понял - мне по барабну куда будет писаться,главное чтоб было не в webapps
на папку выше по относительному не пробовал?
Типа
../
?
...
Рейтинг: 0 / 0
хранение файлов
    #38870600
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяабсолютные пути можно прописать хоть в web.xml
даже винда не удаляет все подряд файлы при деинсталляции.
Вот, у меня и сомнения, что у тебя ресурсы удаляются. И то что нужны абсолютные пути прямо из приложения.
_В крайнем случае_ настройщик - админ пишет абсолютный путь в том формате, который нужен серверу.
так \\ или так //
Не понял твоей проблемы.
...
Рейтинг: 0 / 0
хранение файлов
    #38870602
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадякак понял - мне по барабну куда будет писаться,главное чтоб было не в webapps
на папку выше по относительному не пробовал?
Типа
../
?
не пробовал, т.к. надо чтоб и возможность было куда угодно.
в том числе и на другой диск.

как задать WebResourceRoot root?
...
Рейтинг: 0 / 0
хранение файлов
    #38870603
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяв том числе и на другой диск.
а на такой:
\\шара\моя папка
?
...
Рейтинг: 0 / 0
хранение файлов
    #38870606
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я с вас худею ...
Проблема, которая решается созданием двух файлов, в которые надо прописать две строчки и написанием человеческого init() (всё-равно нужен) решается чтением черезанусных решений с разных форумов.
Я бы понял пре/постресурсы tomcat8, если бы у меня было активное хранилище и "архивные разделы" из которых файлы "только достаются" и, может быть, удаляются, но если всё, что требуется - изменить docBase контекста?.. Зачем???
...
Рейтинг: 0 / 0
хранение файлов
    #38870607
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123а на такой:
\\шара\моя папка
?На общих основаниях: будет у процесса JVM Tomcat-а доступ к ресурсам - можно, нет - обломайтесь.
...
Рейтинг: 0 / 0
хранение файлов
    #38870624
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЯ с вас худею ...
Проблема, которая решается созданием двух файлов, в которые надо прописать две строчки и написанием человеческого init() (всё-равно нужен) решается чтением черезанусных решений с разных форумов.
Я бы понял пре/постресурсы tomcat8, если бы у меня было активное хранилище и "архивные разделы" из которых файлы "только достаются" и, может быть, удаляются, но если всё, что требуется - изменить docBase контекста?.. Зачем???
тут несколько сторон
-изучить новое
-вполе може быть что и внешние ресурсы будут...
-лень изменить docBase, т.к. приходится часто выкладывать на линукс и править каждый раз docBase....
да и забыть можно про исправление , а потом чеши репу, почему не деплоится...
а при сопровождении и подавно...
а так прописал один раз путь для окон и для линукса и пусть сам пишет куда надо.
...
Рейтинг: 0 / 0
хранение файлов
    #38870634
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяизучить новое
Просто твой вопрос относится к администрированию, а не программированию.
Это как в гинекологию уйти)).
Т.к. деплой на линукс и винду, всё рано разные вещи.
От ручной (или через админку) правки конфига всё рано не уйти.
IMHO
...
Рейтинг: 0 / 0
хранение файлов
    #38870653
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадяизучить новое
Просто твой вопрос относится к администрированию, а не программированию.
Это как в гинекологию уйти)).
Т.к. деплой на линукс и винду, всё рано разные вещи.
От ручной (или через админку) правки конфига всё рано не уйти.
IMHO
ну почему? разработка под окнами в netbeans нажал кнопку - развернулось атоматом и war готов
скопировал war на линукс перезапустил томкат (а то и автоматом будет деплоится)
можно даже автоматзировать и одной кнопкой из netbeans деплоить в линукс.
так что правок не требуется.
...
Рейтинг: 0 / 0
хранение файлов
    #38870660
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадятак что правок не требуется.
ты щас доказал, что абсолютные пути не нужны?
Перечитай Basil A. Sidorov
...
Рейтинг: 0 / 0
25 сообщений из 152, страница 2 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / хранение файлов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]