前端实现下载文件功能

一、需求:

将 jmeter 执行日志的结果从mysql数据表中读出来,并下载成一个文件;

二、实现:

1、发送ajax请求,查询需要下载的内容。

function downloadFile(){
        var row = $('#dg').datagrid('getSelected');
        var fileName = row.resultFileName;
        if (null != row) {
            $.ajax({
                url:"${basePath}/jmeterCaseExeLog/downloadScript?exeLogId="+row.id,
                dataType:"json",
                success:function (res) {
                    if (res.header.flag) {
                        var context = res.body;
                        download(context,fileName);
                    } else {
                        Notify(res.header.msg, 'top-right', '5000', 'danger', 'fa-bolt', true);
                    }
                }
            });
        }
    }

2、后端java代码从mysql中查询需要下载的内容,包装后返回给前端。

  @RequestMapping("downloadScript")
  @ResponseBody
  public Object downloadScript(HttpServletRequest request ,Integer exeLogId){
      try {
          TmpJmeterExeLogPo tmpJmeterExeLogPo = jmeterExeLogService.getById(exeLogId);
          String xmlData = tmpJmeterExeLogPo.getResultData();
          return success(xmlData);
      }catch (Exception e){
          return error("500","下载文件失败");
      }
  }

3、ajax请求成功后,前端解析返回的内容,并下载到本地。

// 下载文件方法
function download(content, filename) {
    var eleLink = document.createElement('a');
    eleLink.download = filename;
    eleLink.style.display = 'none';
    // 字符内容转变成blob地址
    var blob = new Blob([content]);
    eleLink.href = URL.createObjectURL(blob);
    // 触发点击
    document.body.appendChild(eleLink);
    eleLink.click();
    // 然后移除
    document.body.removeChild(eleLink);
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值