有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java请求。getServletContext()。getRealPath();正在返回我的目标目录而不是src吗?

我试图在我的网站上实现一个功能,将文件保存到项目目录中。下面是做这件事的方法

 @RequestMapping(value = "/upload", method = RequestMethod.POST)
public String Upload(@RequestParam("file") MultipartFile file, Principal principal, HttpServletRequest request) throws IOException {
    if (!file.isEmpty()) {

                String uploadsDir = "/uploads/";
                String realPathtoUploads =  request.getServletContext().getRealPath(uploadsDir);
                if(! new File(realPathtoUploads).exists())
                {
                    new File(realPathtoUploads).mkdir();
                }


                String orgName = file.getOriginalFilename();
                String filePath = realPathtoUploads + orgName;
                File dest = new File(filePath);
                file.transferTo(dest);


        return "user";
    }
    return "user";

}  

它正在保存文件,但正在目标目录中保存。我不应该把文件保存到src目录而不是目标目录吗?我怎样才能把它改成直接送到src?谢谢

顺便说一句,我正在使用netbeans,如果这有什么不同的话


共 (1) 个答案

  1. # 1 楼答案

    所有与路径相关的方法实际上都会根据容器启动应用程序的文件夹计算路径。因此,如果您使用maven启动Tomcat、Jetty或其他容器,那么您的应用程序是从目标文件夹启动的,maven将war和所有其他资源放在该文件夹中

    因此,getRealPath实际上获取应用程序位置,并将相对“/上传”连接到该位置

    当然,您的容器的行为应该是正常的

    您的需求是可以实现的,但是,如果您选择自己操作路径,那么对文件夹位置的任何更改都会强制手动更改路径

    例如,你可以做:

    String rootPath = "/home/user/";
    String downlods = "downloads";
    
    String realPathtoUploads = rootPath + downlods ;
    
    if(! new File(realPathtoUploads).exists()) {
      new File(realPathtoUploads).mkdir();
    }
    

    嗯, 女孩