ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【前端】前端文件下载方式盘货 [打印本页]

作者: 涛声依旧在    时间: 2024-10-11 02:55
标题: 【前端】前端文件下载方式盘货
前端文件下载方式盘货

在前端开辟中,文件下载是一个常见的功能需求。本文将介绍几种常见的前端文件下载方式,分析各自的优缺点,并提供具体的实现代码。
1. 利用 HTML 的 <a> 标签

优点


缺点


实现代码

  1. <a href="path/to/your/file.txt" download="filename.txt">下载文件</a>
复制代码
2. 利用 Blob 对象

优点


缺点


实现代码

  1. const data = new Blob(['Hello, world!'], { type: 'text/plain' });
  2. const url = window.URL.createObjectURL(data);
  3. const a = document.createElement('a');
  4. a.href = url;
  5. a.download = 'hello.txt';
  6. document.body.appendChild(a);
  7. a.click();
  8. setTimeout(() => {
  9.   document.body.removeChild(a);
  10.   window.URL.revokeObjectURL(url);
  11. }, 0);
复制代码
3. 利用 FileSaver.js

优点


缺点


实现代码

首先,利用 npm 大概 yarn 安装 FileSaver.js:
  1. npm install file-saver
复制代码
大概
  1. yarn add file-saver
复制代码
然后在项目中利用:
  1. import { saveAs } from 'file-saver';
  2. const blob = new Blob(['Hello, world!'], { type: 'text/plain;charset=utf-8' });
  3. saveAs(blob, 'hello.txt');
复制代码
4. 利用 Fetch API

优点


缺点


实现代码

  1. fetch('path/to/your/file.txt')
  2.   .then(response => response.blob())
  3.   .then(blob => {
  4.     const url = window.URL.createObjectURL(blob);
  5.     const a = document.createElement('a');
  6.     a.href = url;
  7.     a.download = 'filename.txt';
  8.     document.body.appendChild(a);
  9.     a.click();
  10.     setTimeout(() => {
  11.       document.body.removeChild(a);
  12.       window.URL.revokeObjectURL(url);
  13.     }, 0);
  14.   })
  15.   .catch(err => console.error('下载失败', err));
复制代码
5. 利用 Axios 库

优点


缺点


实现代码

首先,利用 npm 大概 yarn 安装 Axios:
  1. npm install axios
复制代码
大概
  1. yarn add axios
复制代码
然后在项目中利用:
  1. import axios from 'axios';
  2. axios({
  3.   url: 'path/to/your/file.txt',
  4.   method: 'GET',
  5.   responseType: 'blob',
  6. })
  7.   .then(response => {
  8.     const url = window.URL.createObjectURL(new Blob([response.data]));
  9.     const a = document.createElement('a');
  10.     a.href = url;
  11.     a.download = 'filename.txt';
  12.     document.body.appendChild(a);
  13.     a.click();
  14.     setTimeout(() => {
  15.       document.body.removeChild(a);
  16.       window.URL.revokeObjectURL(url);
  17.     }, 0);
  18.   })
  19.   .catch(err => console.error('下载失败', err));
复制代码
总结

以上几种方式各有优缺点,具体选择哪种方式应根据实际需求来决定。如果是简单的静态文件下载,利用 <a> 标签是最轻便的方式;如果须要动态天生文件内容,Blob 对象或 FileSaver.js 是不错的选择;而对于须要从服务器获取数据并下载的场景,Fetch API 和 Axios 则提供了更强盛的功能和灵活性。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4