下载方式:
1.超链接下载
<a href="/day10/download/day10.txt">下载 day10.txt</a>
若浏览器能解析该资源的mime类型,则打开;若不能接下则下载;
2.编码下载 通过servlet完成
<a href="/day10/download?name=day10.txt">下载 day10.txt</a>
a.设置文件的mime类型
String mimeType=context.getMimeType(文件名)
response.setContentType(mimeType);
b.设置下载头信息 content-disposition
response.setHeader("content-disposition", "attachment;filename="+文件名称);
c.提供流
response.getOutputStream();
扩展:使用commons-io工具类
对拷流:
IOUtils.copy(is,os);
//1:用请求request获取 键值对 /dowload?name=***
String fileName = request.getParameter("name");
//因为服务器会使用iso8859-1进行解码 所以不能识别中文 需要把文件以iso8859-1先转成字节码然后再用utf-8进行解码
fileName = new String(fileName.getBytes("iso-8859-1"), "utf-8");
System.out.println(fileName);
//2:获取context,然后用context获取文件的mime类型
ServletContext context = getServletContext();
String mimeType = context.getMimeType("/dowload/"+fileName);
System.out.println(mimeType);
//3.用请求response设置内容类型
response.setContentType(mimeType);
//4.用请求response设置响应头
String pn = DownLoadUtils.getName(request.getHeader("user-agent"), fileName);
response.setHeader("content-disposition", "attachment;fileName="+pn);
//5.获取文件的输入流
InputStream is = context.getResourceAsStream("/dowload/"+fileName);
System.out.println(is);
//6.获取response的输出流
ServletOutputStream ot = response.getOutputStream();
//7.复制输入流到response的输出流
IOUtils.copy(is, ot);
浙公网安备 33010602011771号