@RequestMapping("/downFile")
public void downFile(HttpServletRequest request, HttpServletResponse response) throws MalformedURLException {
String s = "http://www.gov.cn/premier/2020-12/14/5569425/images/461c0ea163c94683ac0b0cb7bf4eaf39.jpg";
URL url = new URL(s);
File file = new File(s);
String fileName = file.getName();
String ext = fileName.substring(fileName.lastIndexOf(".") + 1);
String agent = (String) request.getHeader("USER-AGENT"); // 判断浏览器类型
try {
if (agent != null && agent.indexOf("Fireforx") != -1) {
fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1"); // UTF-8编码,防止输出文件名乱码
} else {
fileName = URLEncoder.encode(fileName, "UTF-8");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
BufferedInputStream bis = null;
OutputStream os = null;
response.reset();
response.setCharacterEncoding("utf-8");
if (ext == "docx") {
response.setContentType("application/msword"); // word格式
} else if (ext == "pdf") {
response.setContentType("application/pdf"); // word格式
}
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
try {
bis = new BufferedInputStream(url.openStream());
byte[] b = new byte[bis.available() + 1000];
int i = 0;
os = response.getOutputStream(); // 直接下载导出
while ((i = bis.read(b)) != -1) {
os.write(b, 0, i);
}
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}