步驟

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<title>計算機網絡課程設計</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<img src="/theCourseDesign/downloadServlet?filename=1.jpg" style="width: 502.4px;height: 276.8px" />
<br>
<a href="/theCourseDesign/downloadServlet?filename=1.jpg">點擊下載</a>
<br>
</body>
</html>
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package download;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.WriteListener;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author 鄭佳傑
*/
public class DownloadServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//獲取請求參數,文件名稱
String filename=request.getParameter("filename");
//使用字節輸出流加載文件進內存
//找到文件服務器路徑
ServletContext servletContext=this.getServletContext();
String realpath = servletContext.getRealPath("/Testpicture/"+filename);
//使用字節流關聯
FileInputStream fis=new FileInputStream(realpath);
//設置response的響應頭
String mimeType=servletContext.getMimeType(filename);
response.setHeader("content-type", mimeType);
response.setHeader("content-disposition", "attachment;filename="+filename);
//將輸入流的數據寫到輸出流
ServletOutputStream sos=response.getOutputStream();
byte[] buff=new byte[1024*8];
int len=0;
while((len=fis.read(buff))!=-1){
sos.write(buff, 0, len);
}
fis.close();
sos.close();
}
public String getServletInfo() {
return "Short description";
}
}