隔壁杨_ 2022-01-09 11:18 采纳率: 87.5%
浏览 23
已结题

强制下载时,如何在JavaScript中设置Blob文件名称?

当强制通过window.location下载时,如何在JavaScript中设置blob文件的名称?

function newFile(data) {
    var json = JSON.stringify(data);
    var blob = new Blob([json], {type: "octet/stream"});
    var url  = window.URL.createObjectURL(blob);
    window.location.assign(url);
}

运行上面的代码会立即下载文件而不会刷新页面,文件名类似如下所示的随机字符串:
bfefe410-8d9c-4883-86c5-d76c50a24a1d
那么我想将文件名设置为my-download.json,该怎么做?

  • 写回答

1条回答 默认 最新

  • 几何心凉 2022年度博客之星前端领域TOP 1 2022-01-09 11:22
    关注

    创建隐藏的a标记。
    将其href属性设置为blob的URL。
    将其download属性设置为文件名。
    单击a标记。

    var saveData = (function () {
        var a = document.createElement("a");
        document.body.appendChild(a);
        a.style = "display: none";
        return function (data, fileName) {
            var json = JSON.stringify(data),
                blob = new Blob([json], {type: "octet/stream"}),
                url = window.URL.createObjectURL(blob);
            a.href = url;
            a.download = fileName;
            a.click();
            window.URL.revokeObjectURL(url);
        };
    }());
    
    var data = { x: 42, s: "hello, world", d: new Date() },
        fileName = "my-download.json";
    
    saveData(data, fileName);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 创建了问题 1月9日

悬赏问题

  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行