首页 >web前端 >js教程 >在 JavaScript 中下载 Blob 文件时如何强制使用特定的文件名?

在 JavaScript 中下载 Blob 文件时如何强制使用特定的文件名?

Susan Sarandon
Susan Sarandon原创
2024-12-14 08:00:19304浏览

How Can I Force a Specific Filename When Downloading a Blob File in JavaScript?

在 JavaScript 中设置强制下载的 Blob 文件名

直接通过 window.location 下载 Blob 文件时,默认文件名是随机的细绳。但是,您可能希望设置自定义文件名以使其提供更多信息。

要实现此目的,您不能仅依赖 window.location 方法。相反,您需要使用以下步骤:

  1. 创建隐藏的 元素。
  2. 将其 href 属性设置为 blob 的 URL。
  3. 将其下载属性设置为所需的文件名。
  4. 触发 上的单击。

这是一个简化过程的示例:

const saveData = (function () {
  const a = document.createElement("a");
  document.body.appendChild(a);
  a.style = "display: none";
  return (data, fileName) => {
    const json = JSON.stringify(data);
    const blob = new Blob([json], { type: "octet/stream" });
    const url = window.URL.createObjectURL(blob);
    a.href = url;
    a.download = fileName;
    a.click();
    window.URL.revokeObjectURL(url);
  };
})();

const data = { x: 42, s: "hello, world", d: new Date() };
const fileName = "my-download.json";

saveData(data, fileName);

注意:

  • 旧版浏览器可能不支持下载属性。
  • 某些文件格式可能受到限制浏览器,导致下载失败。考虑使用不同的文件扩展名(例如,JSON 的 .txt)。

以上是在 JavaScript 中下载 Blob 文件时如何强制使用特定的文件名?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn