在我的vps上,我想将文件上传到Logos目录.
我的vps上的目录结构如下 –
/home/webadmin/domain.com/html/Logos
当通过我的jsp页面上传文件时,该文件被重命名,然后我想将它放入Logos目录….但我似乎无法在我的servlet代码中获得正确的路径.
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
解决方法:
通常的做法是使存储路径可配置 – 通过某个application.properties文件,或者如果您没有这样的属性文件 – 作为web.xml中的context-param.在那里,您将路径配置为绝对路径,如:
configuredUploadDir=/home/webadmin/domain.com/html/Logos
在代码中获取该值(取决于您存储它的方式),并具有:
File uploadDir = new File(configuredUploadDir);
注意:确保您具有读取和写入目标目录的权限.
标签:java,jsp,servlets
来源: https://codeday.me/bug/20190827/1737725.html