Где хранить загруженные изображения на сервере Linux с помощью Spring MVC

Я написал код для загрузки изображений (изображение профиля студента) на сервер, работающий в среде Linux. Код показан ниже.

 @RequestMapping(value = "/updatePhoto",method = RequestMethod.POST)
public String handleFormUpload(@RequestParam("id") String id,
                               @RequestParam("file") MultipartFile file,
                               HttpServletRequest request,
                               Model model) throws IOException {
    if(!file.isEmpty())
    {
        try
        {
            String relativePath="/resources";
            String absolutePath=request.getServletContext().getRealPath(relativePath);
            System.out.print(absolutePath);
            byte[] bytes=file.getBytes();
            File dir=new File(absolutePath);
            if(!dir.exists())
            {
                dir.mkdir();
            }
            File uploadFile=new File(dir.getAbsolutePath()+File.separator+id+".jpg");
            BufferedOutputStream outputStream=new BufferedOutputStream(new FileOutputStream(uploadFile));
            outputStream.write(bytes);
            outputStream.close();
            model.addAttribute("uploadMessage","image uploaded for id"+id);
        }
        catch (Exception e)
        {
            System.out.print(e);
        }
    }
    return "successFileUpload";

}

я сохранил в папке "/resources". Но проблема в том, что всякий раз, когда я создаю файл войны всего приложения и развертываю его на сервере, он очищает папку "/resources" и удаляет старые загруженные изображения. Есть ли какой-либо способ или путь, я мог бы загрузить изображения.


person Arul Suju    schedule 11.11.2018    source источник
comment
Сохраняйте их в любом месте, кроме того места, где вы их храните в данный момент. т.е. выберите каталог, который не удаляется при каждом развертывании приложения, и сохраните их там.   -  person JB Nizet    schedule 11.11.2018


Ответы (3)


Как я это делаю:

  • Создайте каталог на сервере. Например: /myImages
  • Затем предоставьте полные права пользователю tomcat.

Вы можете идти сейчас. Я где-то читал, что вы не должны сохранять свои материалы в папке /resources, потому что это делает ваше приложение независимым от контейнера, который вы используете: с tomcat вы можете использовать catalina.home, но что, если вы перейдете в другой контейнер

person nguyentaijs    schedule 12.11.2018

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

String rootPath = System.getProperty("catalina.home");
File dir = new File(rootPath + File.separator + "images");

Приведенные выше строки кода создадут папку в базовом каталоге tomcat с именем «images».

Это один из лучших способов хранения изображений.

person Alien    schedule 12.11.2018

Вот простой способ

System.out.println(System.getProperty("user.dir"));
person haidarvm    schedule 10.08.2019