servlet下载文件,只需将响应的头信息设置为:
response.setContentType("application/octet-stream");//说明浏览器这是二进制输出流
response.setHeader("Content-Disposition","attachment;filename="+apkFile.getName());//告诉浏览器文件名
response.setHeader("Content-Length", file.length()+"");//告诉浏览器文件大小
注意,可以不设置response.setHeader("Content-Disposition","attachment;filename="+apkFile.getName());
这样的话,浏览器会根据url来给下载文件命名,比如下载的URL是http://www.a.com/aaa.txt
那么下载后文件名就是aaa.txt;如果URL是http://www.a.com/bbb.action 那么下载后的文件名就是bbb.action
然后通过获取response的输出流即可下载:
File f = new File("d:/test.jar");
InputStream inputStream = new FileInputStream(file);
OutputStream outputStream = response.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(outputStream);
BufferedInputStream bis = new BufferedInputStream(inputStream);
byte[] buffer = new byte[1024];
int i = -1;
while ((i = bis.read(buffer)) != -1) {
bos.write(buffer, 0, i);
}
bos.flush();
bos.close();
bis.close();
outputStream.close();
inputStream.close();