您的位置:首页 > Web前端 > JavaScript

js实现不刷新文件下载功能

2015-11-16 10:50 489 查看

js实现不刷新文件下载功能

网页重定向

构建form表单

网页重定向

$('#downloadBtn').click(function(){
var list =[];
$("#List option:selected").each(function(){
list.push($(this).val());
});
window.open(ctx+"/Stats/StatsDownload";
});


构建form表单

$('#downloadBtn').click(function() {
var form = $("<form>");// 定义一个form表单
form.attr("style", "display:none");
form.attr("target", "");
form.attr("method", "post");
form.attr("action", ctx + "/Stats/StatsDownload");
$("body").append(form);// 将表单放置在web中
form.submit();// 表单提交
});


后台java代码

@ResponseBody
@RequestMapping("/StatsDownload")
public void StatsDownload(StatsReqBean StatsReqBean, HttpServletResponse response) {
try {
StatsReqBean.setOrgId(UserUtils.getOrgId());
OrgProductEmpStatsResBean eBean = productStatsServiceImpl.getOrgProductEmpStatsResBean(StatsReqBean);
List<ProductEmpStatsResBean> list = eBean.getProductEmpStatsResBeanList();
List<String> productIdList = StatsReqBean.getProductIdList();
List<Object[]> exportList = new ArrayList<Object[]>();
String[] columns = {"xxxx", "xxxx", "xxxx", "xxxx"};
int[] columnWidths = {20, 20, 20, 30};
//redis取出為空時,初始化一個對象扔給前台
if(list == null){
list = new ArrayList<ProductEmpStatsResBean>();
}else{
if(productIdList != null &&productIdList.size() != 0){
List<ProductEmpStatsResBean> li = new ArrayList<ProductEmpStatsResBean>();
for(String productId:productIdList){
for(ProductEmpStatsResBean pes:list){
if(pes.getProductId().equals(productId)){
li.add(pes);
}
}
}
list = li;
}
}
for(ProductEmpStatsResBean p:list ){
Object[] object = new Object[4];
//              object[0] = p.getProductId();
object[0] = p.getBriefName();
object[1] = p.getGroupName();
object[2] = p.getTotalOrderNum();
object[3] = p.getTotalSales();
exportList.add(object);
}
ExportExcel exportExcel = new ExportExcel(columns, true, exportList);
exportExcel.setColumnWidths(columnWidths);
Workbook workbook = exportExcel.toExcel();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
File file2 = new File("d://" + PRODUCT_EMP_STAT_FILE_NAME + sdf.format(new Date())+".xlsx");
String[] paths = file2.getAbsolutePath().replaceAll("\\\\", "/").split("/");
String filename = paths[paths.length - 1];
FileOutputStream fos = new FileOutputStream(file2);
workbook.write(fos);
fos.flush();
fos.close();
response.setContentLength((int) file2.length());
response.setContentType("application/octet-stream; charset=utf-8");
// response.setHeader告诉浏览器以什么方式打开
// 假如文件名称是中文则要使用 URLEncoder.encode()编码
// 否则直接使用response.setHeader("content-disposition",
// "attachment;filename=" + filename);即可
response.setHeader("content-disposition",
"attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
OutputStream out = response.getOutputStream();
out.write(FileUtils.readFileToByteArray(file2));
out.flush();
out.close();
file2.delete();
//          json.setCode(1);
//          json.setMessage(SUCCESS);
} catch (Exception e) {
e.printStackTrace();
LOGGER.error("download file error, error=[{}]", e.getMessage());
}
//      return json;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: