在网上搜索到下载方法,总是有一些问题,浪费了一些时间.
1.response.reset();//清除首部的空白行
没加这个导致文件莫名其妙的多出0.01 KB之类,像音频文件直接导致不能使用
/**
* 网页文件下载
* @param response
* @param fileName 文件名
* @param contents
*/
public void downloadFile(HttpServletResponse response, String fileName, byte[] contents) {
if (fileName != null && contents.length !=0) {
response.reset();//清除首部的空白行
response.setHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream");
try {
response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
byte[] buffer = new byte[1024];
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(new ByteArrayInputStream(contents));
OutputStream os = response.getOutputStream();
int i ;
while ((i= bis.read(buffer)) != -1) {
os.write(buffer, 0, i);
}
os.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}