System.getProperty("user.home") возвращает /root при запуске на Tomcat

Я разрабатываю свое приложение в Ubuntu. У меня есть одно веб-приложение Spring MVC Java. В этом у меня есть контроллер. Клиент может загрузить файл (публикация через AngularJS). В контроллере я получаю файл и копирую в определенное место.

Вот мой контроллер

@RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
@ResponseBody
public String UploadFile(HttpServletRequest request,HttpServletResponse response) {

    SimpleDateFormat sdf = new SimpleDateFormat("MM_dd_yyyy_HHmmss");
    String date = sdf.format(new Date());

    String fileLoc = null;

    MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;

    Iterator<String> itr = mRequest.getFileNames();
    while (itr.hasNext()) {
        MultipartFile mFile = mRequest.getFile(itr.next());
        String fileName = mFile.getOriginalFilename();

        String homePath=System.getProperty("user.home");
        String separator=File.separator;

        fileLoc = homePath + separator + "myapp" + separator + "file-uploads" +
                  separator + date + "_" + fileName;

        System.out.println(fileLoc);
        try {
            File file = new File(fileLoc);

            // If the directory does not exist, create it
            if (!file.getParentFile().exists()) {
                file.getParentFile().mkdirs();
            }
            FileCopyUtils.copy(mFile.getBytes(), file);

        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
    return fileLoc;
}

Но когда я развертываю его на сервере Tomcat и запускаю, файл создается в корне.

Когда я печатаю значение fileLoc, он показывает

/root/myapp/file-uploads/01_16_2014_000924_document.jpg

Я добавил основной метод в контроллере.

public static void main(String[] args) {
    String homePath=System.getProperty("user.home");
    String separator=File.separator;

    System.out.println("Home Path: " + homePath);
    System.out.println("Separator: " + separator);
}

Когда я запускаю это как Java-приложение, я получаю правильный вывод

Home Path : /home/shiju
Separator : /

Почему он дает рут при работе на Tomcat?

1 ответ

Решение

Если вы выполняете приложение от имени пользователя root, то очевидно, что /root/ будут возвращены в user.home имущество.

Другие вопросы по тегам