我有一个主页,其中有一个下载目录。 我想从其目录中自动读取该主页的所有文件。
例如,我有主页:www.homepage.org
和子目录resources/downloads
以及我想要显示的下载文件。
我有一个运行Spring和JSP的Java服务器,并尝试了以下操作,但根本不起作用:
String path = request.getContextPath();
path += DOWNLOADS;
URL url = null;
String server = request.getServerName();
try {
url = new URL("https", server, request.getLocalPort(), path);
} catch (MalformedURLException e) {
e.printStackTrace();
}
if (url != null) {
String externalForm = url.toExternalForm();
File directory = new File(externalForm);
String[] files = directory.list();
for (String file : files) {
;
}
}
答案 0 :(得分:1)
您可以使用Servlet。如果资源目录位于Web应用程序的根目录中,请使用
PrintWriter writer = response.getWriter();
String path = getServletContext().getRealPath("/resources/downloads");
File directory = new File(path);
if(directory.isDirectory()){
String[] files = directory.list();
for (String file : files) {
writer.write(file + "<br/>");
}
} else writer.write(directory.getAbsolutePath() + "could not be found");
答案 1 :(得分:0)
我找到了使用FTP管理器的解决方案...... 您可以查看代码here
我希望它可以帮助您解决问题。
答案 2 :(得分:0)
HTTP协议没有提供列出“目录”中“文件”的方法。实际上,从协议规范的角度来看,没有目录这样的东西。
如果您尝试访问的网络服务器支持WebDAV,您可以使用PROPFIND查找集合(即目录)的结构。
或者,如果网络服务器启用了目录列表(并且没有index.html
或其他),那么您可以屏幕清除HTML列表。
否则,没有真正的解决方案......使用HTTP / HTTPS。
在重新阅读问题和答案时,我发现尝试检索目录列表的servlet和承载目录的servlet实际上可以在同一台机器上运行。在这种情况下,您可以选择通过文件系统访问信息。但这将需要“客户端”servlet知道“服务器”servlet如何表示事物。 URL不会(也不能)为您提供该信息。
rickz提供的答案是一种可能的方法,但只有当客户端和服务器servlet实际上是同一个servlet时它才有效。
答案 3 :(得分:0)
您需要使用目录路径而不是网址列出目录。一旦你检索到文件,你必须创建自己的html,把它放到你的网上,如果那就是你想要的。
有一个很好的例子,可以使用JQuery here
创建目录列表和浏览下载部分的软件包中包含一个JSP连接器,如果您不想使用JQuery树,可能需要稍微调整一下。
祝你好运!