先利用上节内容讲的文件上传,上传三个文件 test.json、test.png、test.txt
下载文件展示:
index16_download.jsp
<%--
Created by IntelliJ IDEA.
User: Admin
Date: 2022/1/19
Time: 9:15
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>文件下载</title>
</head>
<body>
<h3>下载页面</h3>
<%--点击下载:<a href="/servlet15_Download">test.png</a> <br/>--%>
点击下载:<a href="/servlet15_Download?type=png">test.png</a> <br/>
点击下载:<a href="/servlet15_Download?type=txt">text.txt</a> <br/>
</body>
</html>
Servlet15_Download.java
package com.test.app;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* @author:
* @date:2022/1/19
* @description:
*/
@WebServlet("/servlet15_Download")
public class Servlet15_Download extends HttpServlet {
/**
*@param: [req, resp]
*@return: void
*@description:
*/
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String fileType = req.getParameter("type");
String fileName = "";
switch (fileType) {
case "png":
fileName = "test.png";
break;
case "txt":
fileName = "test.txt";
break;
}
//设置响应方式
resp.setContentType("application/x-msdownload");
//设置下载后的文件名
resp.setHeader("Content-Disposition", "attachment;filename=" + fileName);
// 获取输出流
OutputStream outputStream = resp.getOutputStream();
//获取工程的index.jsp的绝对路径,Servlet文件也一样可以获取绝对路径
//String path = req.getServletContext().getRealPath("index.jsp");
String path = req.getServletContext().getRealPath("file/" + fileName);
InputStream inputStream = new FileInputStream(path);
int temp = 0;
while ((temp = inputStream.read()) != -1) {
outputStream.write(temp);
}
inputStream.close();
outputStream.close();
//tip:后续可以用反射获取服务器指定资源目录下的所有文件名,然后在jsp中展示出来。
}
protected void doGet2(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置响应方式
resp.setContentType("application/x-msdownload");
String fileName = "1.png";
//设置下载后的文件名
resp.setHeader("Content-Disposition", "attachment;filename=" + fileName);
// 获取输出流
OutputStream outputStream = resp.getOutputStream();
//获取工程的index.jsp的绝对路径,Servlet文件也一样可以获取绝对路径
//String path = req.getServletContext().getRealPath("index.jsp");
String path = req.getServletContext().getRealPath("file/" + fileName);
InputStream inputStream = new FileInputStream(path);
int temp = 0;
while ((temp = inputStream.read()) != -1) {
outputStream.write(temp);
}
inputStream.close();
outputStream.close();
}
}