gpt4 book ai didi

java - Servlet - 将文件保存到磁盘,但不确定使用什么路径?

转载 作者:行者123 更新时间:2023-11-29 06:45:43 25 4
gpt4 key购买 nike

我有一个接受文件上传的 servlet,我想将文件存储在磁盘上的特定目录中。我正在使用 jetty 。文件系统如下所示:

/jetty
/bin
/contexts
/stuff
/webapps
foo.war // one web app
grok.war // another web app
start.jar

我从那个 start.jar 文件启动 jetty 。在 servlet 的上下文中,我不确定如何将文件保存到我想要的目的地,即“/stuff”文件夹:

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException
{
File downloaded = new File("some/path/here/stuff"); // ?
}

是的 - 我不确定要使用什么路径 - 有没有一种方法可以使用 File 类在 java 中打印当前工作目录来解决这个问题?

谢谢

最佳答案

这是一个非常糟糕的做法。不能保证它适用于 Jetty 以外的所有 servletcontainer。即使那样,我也不确定它是否适用于 Jetty。至少,tt 会使您的 webapp 无法移植到其他容器。

当 WAR 扩展时(它是特定于 servletcontainer 的 ifwhere WAR 将被扩展!),然后 ServletContext#getRealPath() 可用于将网页内容相对路径转换为绝对磁盘文件系统路径。

当在 foo.war 中的 servlet 中调用以下行时

String absoluteFooWebPath = getServletContext().getRealPath("/");

并且 Jetty 在同一个 webapps 文件夹中展开了 WAR 文件,那么这将导致一个绝对路径到 /jetty/webapps/foo。然后,要从那里到达 /jetty/stuff,您需要向上导航两个目录,然后从那里导航到 stuff 目录。

String absoluteStuffPath = getServletContext().getRealPath("../../stuff");

毕竟,最可靠的方法是指定一个具有读/写权限的独立于 servletcontainer 的固定路径,您在 webapp 的安装手册中正确记录了该路径,或者使其可通过某些 VM 参数/系统属性进行配置。

关于java - Servlet - 将文件保存到磁盘,但不确定使用什么路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5342943/

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