我正在尝试在服务器中创建一个文件。我发送了一个图像,我想在我的服务器的文件夹中创建该图像,但是具有相对路径。
String filePath = "C:\\Users\\Administrador\\Desktop\\Proyecto\\clienteServidor\\Server\\folder\\image.jpg";
File imageFile = new File(filePath);
...
我正在做绝对路径。
由于
答案 0 :(得分:0)
对目录进行硬编码很少有利于编码。如果您的代码中存在拼写错误会发生什么。使用./
或./*
甚至使用
new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());
这解释为here。
答案 1 :(得分:-1)
这是可行的,但正如德米特里所说,它可能无法在每台服务器上运行。如果您的webapp有权写入该文件夹,则应咨询SecurityManager
类。或者你会得到一个例外。
一种方法是通过ServletContext
:
URL webAppRoot = this.getServletConfig().getServletContext()
.getResource("/images/new-image.jpg");
这将指向您的${tomcat}/webapps/mywebapp/images/new-image.jpg
。
另一种方式是通过ProtectionDomain
:
URL runningClassLocation = this.getClass().getProtectionDomain()
.getCodeSource().getLocation();
但这很可能会给你jar:file://...myapp.jar!/my/package/servlet.class
。
获得网址后,将其转换为File
并附加图片文件夹的相对路径。
<强>更新强>
我同意吉姆的观点,并强调这样做只是出于学术目的。
Java与PHP不同,因此您不应在Web应用程序的文件夹中包含uploads
文件夹。通常,这是通过允许管理员级用户指定为应用程序的存储需求保留的文件夹的文件路径来完成的。