String fileName = request.getParameter("fileName");
//解决文件乱码
fileName = new String(fileName.getBytes("ISO8859-1"),"UTF-8");
//获取请求头中的User-Agent
String agent = request.getHeader("User-Agent");
String bianmaFileName = "";
if (agent.contains("MSIE")) {
// IE浏览器
bianmaFileName = URLEncoder.encode(fileName, "utf-8");
bianmaFileName = bianmaFileName.replace("+", " ");
} else if (agent.contains("Firefox")) {
// 火狐浏览器
BASE64Encoder base64Encoder = new BASE64Encoder();
bianmaFileName = "=?utf-8?B?"
+ base64Encoder.encode(fileName.getBytes("utf-8")) + "?=";
} else {
// 其它浏览器
bianmaFileName = URLEncoder.encode(fileName, "utf-8");
}
//要下载的文件类型
response.setContentType(this.getServletContext().getMimeType(fileName));
//告诉客户端文件不是直接打开,而是下载
response.setHeader("Content-Disposition","attachment;filename="+bianmaFileName);
// 获取文件的绝对路径
String path = this.getServletContext().getRealPath("image/"+fileName);
//获取文件输入流
InputStream in = new FileInputStream(path);
//获得输出流(通过response 获取输出流,向客户端写数据)
ServletOutputStream out = response.getOutputStream();
//文件拷贝代码
int len = 0;
byte[] buffer = new byte[1024];
while((len= in.read(buffer))>0){
out.write(buffer, 0, len);
}
in.close();
out.close();
servlet 下载代码模板
最新推荐文章于 2022-04-11 16:46:20 发布