2015-06-01 2 views
0

В моем Java webapp у меня есть автоматический скрипт, который отправляет электронное письмо, и в этом письме мне нужно прикрепить файл. В настоящее время я имею его в общедоступной папке «assets», но я не могу передать путь к файлу в своем Java-коде без использования абсолютного пути (мой dev-сервер - это моя локальная рабочая станция, поэтому пути полностью отличаются от этого, чтобы жить).Где хранить файл для вложения электронной почты в Java

Есть ли способ прикрепить файл с помощью веб-url (http://domain.com/assets/file.pdf) или относительного пути? Мой текущий рабочий каталог в соответствии с Java - это «C: \ Users \ USERNAME \ GlassFish_Server \ glassfish \ domains \ domain1 \», но на этом пути нет ничего полезного - никаких классов Java, никаких веб-файлов, ничего. Или я должен поместить файл где-то в другом месте .. как в той же папке, что и скрипт, который отправляет сообщение по электронной почте, что кажется неправильным.

+0

Если я правильно понимаю вашу проблему: файл, который вы хотите добавить, должен находиться в вашем пути к классу, поэтому убедитесь, что папка, в которой находится файл, также включена в ваш путь к классам. – Jakub

ответ

0

Это зависит от вашего развертывания.

Как @Jakub сказал: если вы можете организовать файл, находящийся на пути к классу приложения, вы можете использовать ClassLoader.getResourceAsStream (...) для извлечения содержимого вашего файла (javadoc достаточно хорош, полезно знать что вы можете получить загрузчик классов, используя this.getClass(). getClassloader()).

Вы можете использовать файл конфигурации (и любую из хороших библиотек управления конфигурацией), чтобы указать абсолютный путь к файлу вашего ресурса.

Если вы знаете, где файл относится к вашему пути выполнения, вы можете сказать «новый файл (« »). GetAbsolutePath()», а затем добавить свой относительный путь.

+0

Итак, если мой пакет org.orgname.project, я должен поместить файл pdf в каталог, например org.orgname.project.lib? И тогда, если я хочу приложить PDF к письму, сделайте String filename = this.getClass(). GetClassLoader(). GetResource ("/ lib/filename.pdf"). GetPath()? (Если это правильно, то он все еще не работает - nullPointerException все еще) – Felix

+0

, если вы храните свой каталог в org.orgname.project.lib, тогда ваш путь к ресурсу будет «org/orgname/project/lib/filename.pdf» –

+0

В примечании к стилю цепочка после .getResource просто запрашивает исключение нулевого указателя. Получите ресурс, проверьте значение null, а затем, если оно не равно null, getPath() или получите содержимое. –

Смежные вопросы