介绍两种文件下载的方法
- 超链接下载
使用超链接访问服务器上的资源的时候。
如果浏览器可以解析到当前资源,就是直接访问显示。
如果不能解析,就会弹出对话框,要求用户保存。
//如:访问项目中的download下的aa.zip文件
<a href="${pageContext.request.contextPath}/download/aa.zip">超链接</a>
- servlet下载
通过servlet类进行文件的下载。直接上代码
@WebServlet("/FileController")
public class FileController extends HttpServlet {
private static final long serialVersionUID = 1L;
public FileController() {
// TODO Auto-generated constructor stub
}
/** 处理上传文件 */
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
// 设置编码格式
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
String name = "aa.zip";
// 设置响应头以附件的信息下载
response.setHeader("content-disposition", "attachment;filename="+name);
InputStream is = this.getServletContext().getResourceAsStream("/download/aa.zip");
// 获取输出流
ServletOutputStream outputStream = response.getOutputStream();
byte[] by = new byte[1024];
int length = -1;
while ((length = is.read(by)) != -1) {
outputStream.write(by, 0, length);
}
}
}
jsp页面访问
<a href="${pageContext.request.contextPath}/FileController">servlet下载</a>