a 标签下载总结

最近迷上在浏览器端编写 js 脚本,由于频繁需要创建动态标签下载数据,所以做一个小总结。

1、动态创建 a 标签

// 创建下载标签
  createElementDownLoad(url) {
    if (!document) { throw new Error("document 对象不存在!"); }
    const a = document.createElement("a");
    a.download;
    a.target = "_blank";
    a.href = this.mergePath(url);
    console.log(this.mergePath(url));
    // 触发点击
    a.click();
  }
属性说明
download下载的资源的名称
target打开该连接的方式( _self_blank
href资源的地址(本地、远程地址)

2、远程普通文件的下载

  • 需要在 href 属性中添加需要下载的文件的地址
  • download 属性用于设置下载的文件的名称

3、自定义文本下载

  • 需要将文本转化为特定格式数据(这里已 Blob 为例)

    // 保存为 Blob 文件流
    saveAsFileStream(data) {
        const content = data;
        return new Blob(
            [content], 
            { type: "text/plain;charset=UTF-8" }
        );
    }
    
  • 然后需要将 blob 数据生成为 url

    transformAsURL(blob){
        return window.URL.createObjectURL(blob);
    }
    
  • 创建下载

    const a = document.createElement("a");
    const content = "this is data";
    a.download = Date.now() + Math.round(Math.random() * 50 * 1000) + '.txt';
    a.target = "_blank";
    a.href = transformAsURL(saveAsFileStream(content));
    // 触发点击
    a.click();
    

PS. Blob 对象表示一个不可变、原始数据的类文件对象(详情

在这里插入图片描述

PS. URL.createObjectURL() 静态方法用于创建指向特定数据的 URL ,该方法接收一个参数(File对象、Blob对象、MediaSource对象)作为源创建URL (详情)

4、图片的下载

(由于浏览器自带对图片的处理,所以当触发 a 标签时会自动打开图片文件)

  • 一般来说,在携带图片地址链接的 a 标签中添加 download 属性即可实现下载。

  • 对于远程图片,需要在图片链接上补充参数

    ?response-content-type=application/octet-stream

PS. 浏览器运行自定义脚本文件方式

  • 右键打开 开发者工具

  • 选择 Sources

  • 新建 New snippet

  • 保存(ctrl + s)
    自定义脚本文件方式

  • 右键打开 开发者工具

  • 选择 Sources

  • 新建 New snippet

  • 保存(ctrl + s)

  • 运行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值