当前位置:首页 > JavaScript

js 实现下载文件

2026-01-30 16:33:41JavaScript

使用 a 标签下载文件

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

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 对象生成下载链接,适合动态生成的文件内容。

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
分享给朋友:

相关文章

vue实现文件的上传

vue实现文件的上传

文件上传的基本实现 在Vue中实现文件上传通常结合HTML的<input type="file">元素和FormData对象。通过监听文件选择事件获取文件对象,再通过AJAX或axios发…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML…