@RequestMapping(value = "/downloadfromhive")
@Test
public String downloadfromhive(HttpServletRequest request,
HttpServletResponse response, Model model,
UnstructuredBean unstructuredbean) {
IDispatcherWebServiceService dispatcherWebServiceService = new IDispatcherWebServiceService();
IDispatcherWebService service = (IDispatcherWebService) dispatcherWebServiceService
.getIDispatcherWebServicePort();
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("datasource", "HBASE");
jsonObject.addProperty("actiontype", "downloadfile");
jsonObject.addProperty("tablename", "file");
jsonObject.addProperty("fm", "cf");
jsonObject.addProperty("rowkey", unstructuredbean.getRowkey());
jsonObject.addProperty("context", "context");
Gson gson = new Gson();
final String json = gson.toJson(jsonObject);
String result = service.handle(json);
InfoBean infoBean = new InfoBean();
infoBean = gson.fromJson(result, InfoBean.class);
String message = infoBean.getMessage();
BASE64Decoder base64Decoder = new BASE64Decoder();
byte[] bytes = null;
DataOutputStream dos = null;
try {
bytes = base64Decoder.decodeBuffer(message);
String fileName = unstructuredbean.getName()+"."+unstructuredbean.getType();
// 修改下载名中文乱码
String userAgentString = request.getHeader("User-Agent");
String browser = UserAgent.parseUserAgentString(userAgentString).getBrowser().getGroup().getName();
if(browser.equals("Chrome") || browser.equals("Internet Explorer") || browser.equals("Safari")) {
fileName = URLEncoder.encode(fileName,"utf-8").replaceAll("\\+", "%20");
} else {
fileName = MimeUtility.decodeText(fileName);
}
response.addHeader("Content-Disposition", "attachment;filename="+fileName);
OutputStream os = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/vnd.ms-excel;charset=gb2312");
os.write(bytes);
os.flush();
os.close();
System.out.println("-------完成下载-------");
} catch (Exception e) {
System.out.println("exception:"+e);
model.addAttribute("exceptions", "下载成功!");
} finally {
}
return "redirect:selectbyhiveother";
}
下载文件直接通过流下载,并修改下载名 and 解决乱码问题
最新推荐文章于 2024-07-18 14:57:59 发布