List 在JSP中列出和链接文件夹的内容不会';行不通
我必须制作一个用于从文件夹下载文件的Web应用程序。我使用Tomcat作为服务器。我编写了一个JSP页面来列出我的数据文件夹的内容,并尝试为此文件夹中的每个文件制作链接 JSP页面如下所示:List 在JSP中列出和链接文件夹的内容不会';行不通,list,jsp,hyperlink,download,List,Jsp,Hyperlink,Download,我必须制作一个用于从文件夹下载文件的Web应用程序。我使用Tomcat作为服务器。我编写了一个JSP页面来列出我的数据文件夹的内容,并尝试为此文件夹中的每个文件制作链接 JSP页面如下所示: <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" import="java.io.File,java.io.IOException,java.util.*
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" import="java.io.File,java.io.IOException,java.util.*,java.io.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Contents <br>
<% File f = new File("C:\\Users\\name\\Desktop\\eclipse\\app\\PTW\\WebContent\\data\\"); // current directory
File[] files = f.listFiles();
for (File file : files) {
if (file.isDirectory()) {
//System.out.print("directory:");
} else {
%>
<a href="<%=file.getAbsolutePath()%>" target="_blank"><br> <%=file.getName() %>
</a>
<%
}
}
%>
</body>
</html>
在此处插入标题
内容
问题在于,下载这些文件仅在以下情况下有效:即,仅当用户选择右键单击-将目标另存为时
所以我这样做是错误的!但是我不明白为什么?如何强制从这个JSP下载文件?
谢谢您必须知道文件系统上文件的路径与URL的路径不同。文件系统只有服务器知道,URL是浏览器访问的路径 假设您的文件位于
/opt/tomcat/webapps/myApp/folder/file.jpg中,并且您正在www.example.com
上运行tomcat。如果(通过JSP)生成如下链接
<a href="/opt/tomcat/webapps/myApp/folder/file.jpg">Download File</a>
您的浏览器将找不到该文件。浏览器需要找到的URL是:
www.example.com/myApp/folder/file.jpg
其中包括
- 域
www.example.com
- servlet上下文
myApp
- 应用程序内部指向文件
文件夹/file.jpg
因此,您需要在JSP中构建路径/myApp/folder/file.jpg
。您可以这样做:
<a href="${pageContext.request.contextPath}/folder/file.jpg">Download</a>
我使用这里而不是scriptlet。这被认为是更好的样式,因为它提高了维护性和可读性
注意:仅当您的文件位于webapplication目录(myApp
)内时,此选项才有效。如果在外部,您将需要一个servlet将文件流式传输到客户端,但这是另一回事。非常感谢。现在我明白为什么它不起作用了。您告诉我如何构建特定文件的路径,例如file.jpg。但现在我需要创建一个内容列表,以及文件夹中每个文件的链接。就像我在使用file.getName()的代码中所做的那样。我没有将文件.getName()连接到${pageContext.request.contextPath}/folder/。可能吗?@AdiCrainic List目录的内容是可能的,但这是一个不同的主题。如果你被困在某个地方,请随时在Stackoverflow上发布另一个问题。不客气!
<a href="${pageContext.request.contextPath}/folder/file.jpg">Download</a>