当前位置:首页 > JavaScript

js 实现下载文件

2026-01-30 16:33:41JavaScript

使用 a 标签下载文件

通过创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 的情况。

js 实现下载文件

const downloadFile = (url, filename) => {
  const link = document.createElement('a');
  link.href = url;
  link.download = filename || 'file';
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
};
// 调用示例
downloadFile('https://example.com/file.pdf', 'document.pdf');

通过 Blob 对象下载动态内容

将文本或二进制数据转换为 Blob 对象生成下载链接,适合动态生成的文件内容。

js 实现下载文件

const downloadTextAsFile = (content, filename, mimeType = 'text/plain') => {
  const blob = new Blob([content], { type: mimeType });
  const url = URL.createObjectURL(blob);
  const link = document.createElement('a');
  link.href = url;
  link.download = filename || 'file.txt';
  document.body.appendChild(link);
  link.click();
  setTimeout(() => {
    document.body.removeChild(link);
    URL.revokeObjectURL(url);
  }, 100);
};
// 调用示例
downloadTextAsFile('Hello, world!', 'example.txt');

下载二进制文件(如图片、PDF)

通过 fetch 获取文件并转换为 Blob 对象下载。

const downloadBinaryFile = async (url, filename) => {
  const response = await fetch(url);
  const blob = await response.blob();
  const objectUrl = URL.createObjectURL(blob);
  const link = document.createElement('a');
  link.href = objectUrl;
  link.download = filename || url.split('/').pop();
  document.body.appendChild(link);
  link.click();
  setTimeout(() => {
    document.body.removeChild(link);
    URL.revokeObjectURL(objectUrl);
  }, 100);
};
// 调用示例
downloadBinaryFile('https://example.com/image.png', 'photo.png');

处理跨域资源下载

若资源跨域且服务器未设置 CORS,可通过后端代理或服务端转发实现下载。

注意事项

  • download 属性受同源策略限制,跨域文件可能无法正确命名。
  • 动态生成的 Blob URL 需通过 URL.revokeObjectURL 释放内存。
  • 大文件下载建议使用分块或流式处理。

标签: 文件js
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…