gpt4 book ai didi

java - System.getProperty ("user.home") 在 Tomcat 上运行时返回/root

转载 作者:行者123 更新时间:2023-11-28 22:04:56 27 4
gpt4 key购买 nike

我正在 Ubuntu 中开发我的应用程序。我有一个 Java web Spring MVC 应用程序。因为我有一个 Controller 。客户端可以上传文件(通过 AngularJS 发布)。在 Controller 中,我正在获取文件并将其复制到特定位置。

这是我的 Controller

@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

我在 Controller 中添加了一个ma​​in方法。

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 上运行时需要 root?

最佳答案

如果您使用 root 用户执行应用程序,那么很明显 /root/ 将在 user.home 属性中返回。

关于java - System.getProperty ("user.home") 在 Tomcat 上运行时返回/root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21153933/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com