JS - 下载文件

1.下载new file() 生成的对象文件

首先创建一个a标签,href属性赋值为要下载文件对象的URL,然后调用a标签上的click()方法就可以下载file文件到本地了。

关于文件对象的URL怎么获得,这里要用到URL.createObjectURL(object)方法,参数object为一个File对象或者Blob对象,返回值就是一个UTF-16字符串,可以当作a标签的href属性值来使用。注意:在使用完URL.createObjectURL()方法之后,要用URL.revokeObjectURL(url)来释放掉。参数url为刚才生成的那个UTF-16字符串。
参考

实例代码
let file = new File([data], "fileName.obj");//创建一个file文件
//let blob = new Blob([data]);
let aTag = document.createElement('a');//创建一个a标签
aTag.download = file.name;
let href = URL.createObjectURL(file);//获取url
aTag.href = href;
aTag.click();
URL.revokeObjectURL(href);//释放url
  1. 后台服务器有静态资源且有固有的文件名称(GET方式下载文件)
window.location.href="http://www.域名/template.xlsx(文件名)"
  1. 后台返回文件流
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
// 传参 => 调接口  => 下载
axios.post(请求路径URL, {参数Params}, {
            responseType: 'blob'
          }).then(function(res){
            var blob = res.data;
           // FileReader主要用于将文件内容读入内存
            var reader = new FileReader();
            reader.readAsDataURL(blob);
            // onload当读取操作成功完成时调用
            reader.onload = function(e) {
              var a = document.createElement('a');
              // 获取文件名fileName
              var fileName = res.headers["content-disposition"].split("=");
              fileName = fileName[fileName.length - 1];
              fileName = fileName.replace(/"/g, "");
              a.download = fileName;
              a.href = e.target.result;
              document.body.appendChild(a);
              a.click();
              document.body.removeChild(a);
            }
          });
  1. form 表单提交
var exportForm = $('<form action="/api/cert/download" method="post">\
        <input type="hidden" name="ids" value="'+参数ids值+'"/>\
        </form>');
       $(document.body).append(exportForm);
       exportForm.submit();
       exportForm.remove();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值