2014-01-16 4 views
0

Я разрабатываю свое приложение в Ubuntu. У меня есть одно приложение Java Spring Spring MVC. У меня есть контроллер. Клиент может загрузить файл (проводя через AngularJS). В контроллере я получаю файл и копирую его в определенное место.System.getProperty ("user.home") возвращает/root при работе на Tomcat

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

@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 Application, я получаю правильного выход

Home Path : /home/shiju 
Separator :/

Почему это дает корень при запуске на Tomcat?

+0

Под каким пользователем работает процесс tomcat? – MadProgrammer

+4

Вы используете tomcat как root? –

+0

errr, потому что Tomcat работает как root? – John3136

ответ

5

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

+2

Да. Я запускаю его как root. –

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