Подтвердить что ты не робот

Получить корневой веб-приложение из Spring контроллера

Я пытаюсь записать загруженный многостраничный файл в файловую систему. У меня есть каталог под названием audio, который находится в корне моего веб-приложения (а не внутри WEB-INF, но рядом с ним, для него общедоступно, например, css и javascript).

Я хочу записать загруженный файл в этот каталог, но я не могу найти путь, который мне нужен. Я думал, что получить ServletContext(), тогда использование realPath() может работать, но у меня нет ссылки на ServletContext через контроллер Spring. Спасибо за любой hep

@RequestMapping(value="/uploadSample")
public ModelAndView upload(HttpServletRequest request, HttpServletResponse response, @RequestParam("file") MultipartFile f) {

    if (f == null) {
        return new ModelAndView("upload", "msg", "The file is null.");
    }
    try {
        // I need to set AUDIO_PATH to <webAppRoot>/audio
        FileOutputStream file = new FileOutputStream(AUDIO_PATH + "/" + f.getOriginalFilename());
        file.write(f.getBytes());
        file.close();
    }
    catch (FileNotFoundException ex) {
        Logger.getLogger(SampleUploadController.class.getName()).log(Level.SEVERE, null, ex);
    }
    catch (IOException ex) {
            Logger.getLogger(SampleUploadController.class.getName()).log(Level.SEVERE, null, ex);
    }



   return new ModelAndView("upload", "msg", "File ( " + f.getOriginalFilename() + ") successfully uploaded.");
}

}

4b9b3361

Ответ 1

Я думал получить ServletContext() то использование realPath() может работать, но я не имеют ссылки на ServletContext

Да, да. См. HttpServletRequest.getSession(). GetServletContext()

Ответ 2

Чтобы получить ссылку на ServletContext, ваш класс может реализовать ServletContextAware

EDIT: ServletContext также доступен в контейнере веб-приложений под именем bean ServletContext, поэтому вы можете вводить его, как и любой другой bean в Spring.

Ответ 3

Получение URL-адреса сервера с помощью ServletContext небезопасно в разных средах.

Лучше получить URL-адрес из файла свойств.