public void download_file(String fileName, HttpServletRequest request,String filePath,
HttpServletResponse response) {
try {
URL url = new URL(filePath);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置超时间为3秒
conn.setConnectTimeout(3*1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
conn.setRequestMethod("GET");
conn.connect();
//得到输入流
InputStream inputStream = conn.getInputStream();
//获取自己数组
byte[] buffer = new byte[2048];
//设置content-disposition响应头控制浏览器弹出保存框,若没有此句则浏览器会直接打开并显示文件。中文名要经过URLEncoder.encode编码,否则虽然客户端能下载但显示的名字是乱码
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
int len = 0;
// 通过response对象获取OutputStream流
OutputStream out = response.getOutputStream();
// 将InputStream流写入到buffer缓冲区
while ((len = inputStream.read(buffer)) > 0) {
//使用OutputStream将缓冲区的数据输出到客户端浏览器
out.write(buffer, 0, len);
}
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}