文件下载的注意事项
1.前台
需要把文件的唯一标识 传递到后台 name id
2.后台的注意事项
文件按的下载不涉及到视图的跳转 return null void
文件在响应时需要设置响应头, 作用:告知浏览器下载方式 编码方式
response.setHeader("content-Disposition","attachment;fileName="+ URLEncoder.encode(name,"utf-8"));
需要设置文件的响应类型
第一步:接收参数
第二步:根据路径找到指定文件
String realPath = request.getSession().getServletContext().getRealPath("/upload");
String filepath = realPath + "/" + name;
File file = new File(filepath);
第三步:将文件读取为输入流
FileInputStream fis = new FileInputStream(file);
第四步:获取输出流,相应输出流
ServletOutputStream outputStream = response.getOutputStream();
第五步:文件拷贝,将输入流内容读取出来,写到输出流中
int len = 0;
byte[] bytes = new byte[1024];
while (true) {
len = fis.read(bytes);
if (len == -1) break;
outputStream.write(bytes, 0, len);
}
第六步:(问题)文件下载到浏览器之后自动在线打开?需要以附件的形式进行下载,指定下载文件的名字
response.setHeader("content-Disposition", "attachment;fileName=" + URLEncoder.encode(name, "utf-8"));
第七步:文件下载时建议返回响应类型(动态获取文件类型)
String extension = FilenameUtils.getExtension(name);
String mimeType = request.getSession().getServletContext().getMimeType("." + extension);
response.setContentType(mimeType);