Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 在JSP中列出和链接文件夹的内容不会';行不通_List_Jsp_Hyperlink_Download - Fatal编程技术网

List 在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.*

我必须制作一个用于从文件夹下载文件的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.*,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>