使用Java和JSP将文件上传到服务器上的目录 - 无法获得正确的路径

时间:2011-01-18 17:08:46

标签: java jsp servlets

在我的vps上,我想将文件上传到Logos目录。 我的vps目录结构如下 -
/home/webadmin/domain.com/html/Logos

当通过我的jsp页面上传文件时,该文件被重命名,然后我想将它放入Logos目录....但我似乎无法在我的servlet代码中获得正确的路径。 / p>

servlet代码片段 -

String upload_directory="/Logos/"; // path to the upload folder

File savedFile = new File(upload_directory,BusinessName+"_Logo."+fileExtension);

//.....
//file saved to directory
//.....

我尝试了很多变化,但仍然失败了。指定路径的正确方法是什么?

被修改
使用getServletContext()的问题是它返回Tomcat和我的webapp所在目录的路径...而我想要到达我的html和图像文件所在的目录 - 在vps的根目录下。如何指定该路径?

    String server_path = getServletContext().getRealPath("/"); // get server path.                      

    //server_path = /opt/tomcat6/webapps/domain.com/

    String upload_directory = "Logos/"; // get path to the upload folder.

    String complete_path = server_path + upload_directory; // get the complete path to the upload folder.

    //complete_path = /opt/tomcat6/webapps/domain.com/Logos/

    File savedFile = new File(complete_path,"NewLogo.jpg");

    //savedFile = /opt/tomcat6/webapps/domain.com/Logos/NewLogo.jpg 

4 个答案:

答案 0 :(得分:3)

通常的做法是使存储路径可配置 - 通过某个application.properties文件,或者如果您没有这样的属性文件 - 作为context-param中的web.xml 。在那里,您将路径配置为绝对路径,如:

configuredUploadDir=/home/webadmin/domain.com/html/Logos

在代码中获取该值(取决于您的存储方式),并具有:

File uploadDir = new File(configuredUploadDir);

注意:确保您具有读取和写入目标目录的权限。

答案 1 :(得分:2)

您可以在任何jsp或servlet中使用以下代码。

  

1)String serverPath = getServletContext()。getRealPath(“/”);

这将为您提供从根目录到Web应用程序目录的服务器的完整路径 对我来说,当我从myapp应用程序进行sysout时,“D:\ local \ tomcat-6.0.29 \ webapps \ myapp”

如上所述获得服务器系统的完整实际路径后,您可以获得相对于目录的路径。因此,如果我在 myapp \ data 中有一些数据文件 - 我可以将 \ data \ filename 附加到我们之前获得的serverPath。
即使您在同一系统上安装了多台服务器,这也适用于所有情况。

2)您可以使用

系统属性获取服务器回家
  

System.getProperty( “TOMCAT_HOME”)

然后可以在程序中使用绝对路径

3)使用<init-param>

将绝对目录路径传递给任何servlet

希望这对你有用。

答案 2 :(得分:1)

嗯,问题是:文件构造函数不创建文件,只准备创建,然后,在构造文件实例后,你必须调用createNewFile()方法,这就是全部。

答案 3 :(得分:0)

路径“/ Logos /”将尝试在系统的根目录中创建文件,这不是您想要的。查看ServletContext.getRealPath()方法。