一、后台下载功能的代码
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
InputStream inputStream = new FileInputStream(filePath);
OutputStream os = response.getOutputStream();
byte[] b = new byte[1024];
int length;
while ((length = inputStream.read(b)) > 0) {
os.write(b, 0, length);
downloadedLength += b.length;
}
//关闭
二、诸坑
坑一:需要下载文件时,前端不要使用ajax请求,不然的话即便请求成功,也不会下载文件。可以通过form表单提交的方式请求。
这个问题困扰我很久,参考处https://q.cnblogs.com/q/84808/,多谢这位仁兄。
坑二:
fileName,下载的文件名,一定要加后缀,加后缀,加后缀,重要的事说三遍。
如不加后缀,浏览器无法识别文件类型,下载到的文件也是没有后缀的文件。即便在setContentType中设置了内容类型(比如word对应的contentType类型),如果文件名没有后缀,浏览器下载到的依然是没有后缀的文件。