文件下载
- 获取要下载的文件名
- 读取要下载的文件内容(通过ServletContext对象可以读取)
- 在回传前,通过响应头告诉客户端返回的数据类型
- 还要告诉客户端收到的数据是用于下载使用(还是使用响应头)
- 把下载的文件内容回传给客户端

package com.ftn.servlet;
import org.apache.commons.io.IOUtils;
import sun.misc.BASE64Encoder;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
public class DownloadServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String downloadFileName = "1.jpg";
ServletContext servletContext = getServletContext();
InputStream resourceAsStream = servletContext.getResourceAsStream("/file/"+downloadFileName);
String mimeType = servletContext.getMimeType(downloadFileName);
System.out.println("下载的文件类型:" + mimeType);
response.setContentType(mimeType);
response.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode("修猫咪.jpg","UTF-8"));
ServletOutputStream outputStream = response.getOutputStream();
IOUtils.copy(resourceAsStream,outputStream);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}