Здравствуйте, прощу прощения за очередной вопрос. Прошлый канул в лето т.к я вовремя не ответил. Но проблема у меня осталась, опять убил весь день на это. Суть в том, что jsp не отображает изображение даже по абсолютному пути. Я уже какие пути не пробовал и куда только не клал это изобажение.
Если создать просто html cтраницу с этим адресом, то если открывать через idea ( пкм на странице -> открыть в браузере ) то изображения тоже не будет, но если просто перейти через проводник к этому файлу и отрыть его в браузере, то картинка будет отображаться.
в jsp у меня так ничего и не отображалось, сколько бы я не пытался, только если в webapp/recources закидывать и статичные изображения показывались, которые были во время деплоя там.
Но мне именно и нужно чтоб были на файловой системе изображения, отдельно от сервера, туда они сохраняются через форму и используются.
Так выглядит эта html страница
это jsp
Так выглядит jsp после запуска сервера при переходе на неё
Это ошибка в браузере которая пишется
@Victor хранение картинок в базе - это не извращение, а только один из возможных вариантов. посмотри на OpenCMS - все хранится в базе. и без проблем. Проблема с хранением картинок существует, потому как браузеры не имеют доступа ко всему что не на "сайте" , а хранить картинки в домашней папке сайта - можно, но при этом надо хранить их и в папке разработчика :) чтоб можно было деплоить... и не потерять. вот это и есть извращение , количество картинок растёт. файл .war будет увеличиваться. решение этой проблемы существует. необходимо сделать несколько вещей (только надо учесть что если разворачивать сайт на линуксах - это дно место хранения в файловой системе, а разработка (как правило) идёт под окнами, и место хранения совсем другое.) в файл context.xml проекта пишем
<Context path="/сайт" allowCasualMultipartParsing="true" >
<Resources className="org.apache.catalina.webresources.StandardRoot">
<PostResources className="MyDirResourceSet" webAppMount="/dataFiles" />
</Resources>
</Context>
в сервлете, в методе
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) {
.....
HttpServletRequest httpRequest = (HttpServletRequest) req;
String url = httpRequest.getRequestURI().replace(сайт+ "/pics", "dataFiles");
RequestDispatcher requestDispatcher = httpRequest.getRequestDispatcher(url);
try {
requestDispatcher.forward(req, resp);
} catch (ServletException | IOException ex)
{
Logger.getLogger(UserFilter.class.getName()).log(Level.SEVERE, null, ex);
}
.....
соответственно доступ к таким картинкам будет http://сервер.мой/сайт/pics/подпапки
так же надо создать jar
import org.apache.catalina.LifecycleException;
import org.apache.catalina.webresources.DirResourceSet;
/**
* Represents a {@link org.apache.catalina.WebResourceSet} based on a directory.
*/
public class MyDirResourceSet extends DirResourceSet {
protected static final String WinPathToPic = "C:/Catalina/mo/";
protected static final String DebPathToPic = "/usr/mo/pic/";
private String getBaseForHostOS() {
String OS = System.getProperty("os.name").toLowerCase();
if (OS.contains("win")) {
return WinPathToPic;
}
return DebPathToPic;
}
@Override
protected void initInternal() throws LifecycleException {
System.out.println("Base " + getBaseForHostOS());
setBase(getBaseForHostOS());
super.initInternal();
}
}
и поместить его в папку lib в расположении tomcat (под линуксами и под окнами).
Сохранять картинки надо с учётом путей для окон и линуксов, используя примерно это:
private static final String OS = System.getProperty("os.name").toLowerCase();
protected static final String WIN_PATH_TO_PIC = "C:\\Catalina\\mo\\";
protected static final String DEBIAN_PATH_TO_PIC = "/usr/mo/pic/";
public static String getPathToPic() {
if (OS.contains("win")) {
return WIN_PATH_TO_PIC;
}
return DEBIAN_PATH_TO_PIC;
}
примерно так... взято из рабочего проекта...
PS спасибо Alex Kuznetsov с sql.ru
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имею такой код из примера библиотеки Spongy CastleКомпилятор ругается на oTAG, ouTAG, lTAG Объясните что это за теги такие и как из объявить?
Нужно передать строковую переменную из Activity в фрагмент находящийся в этом Activity