response.reset();
//设置为下载application/x-download
response.setContentType("application/x-download charset=UTF-8");
//通常解决汉字乱码方法用URLEncoder.encode(...)
String filenamedisplay = URLEncoder.encode(filename,"UTF-8")+".doc";
if("FF".equals(getBrowser(request))){
}
response.setHeader("Content-Disposition","attachment;filename=" + filenamedisplay);
以下为服务器端判断客户端浏览器类型的方法
private String getBrowser(HttpServletRequest request){}
//通常可如下:
String UserAgent = request.getHeader("USER-AGENT").toLowerCase();
String strBroeser = null;
if(UserAgent!=null){
if (UserAgent.indexOf("msie") >=0 ) strBroeser = "IE";
if (UserAgent.indexOf("firefox") >= 0) strBroeser = "FF";
if (UserAgent.indexOf("safari") >= 0) strBroeser = "SF";
}
if("FF".equals(strBroeser)){
String fileName = type + "导出." + excel.getFileSuffix();
String enableFileName = "=?UTF-8?B?" + (new String(Base64.encode(fileName.getBytes("UTF-8")))) + "?=";
response = Response.status(Status.OK).header("Content-Type","application/vnd.ms.excel;charset=GBK")
.header("Content-Disposition","attachment; filename=" +enableFileName).entity(bos.toByteArray()).build();
}
else{
response = Response.status(Status.OK).header("Content-Type","application/vnd.ms.excel;charset=GBK")
.header("Content-Disposition","attachment; filename=\""+URLEncoder.encode(type + "导出."+ excel.getFileSuffix(),"UTF-8") + "\"").entity(bos.toByteArray()).build();
}