后端返回文件流,前端怎么导出、下载

1.在前端导出和下载后端返回的文件流时,可以使用以下几种方法:

使用window.open()方法:

在前端使用window.open()方法打开一个新的窗口或标签页,并将后端返回的文件流作为URL传递给该方法。浏览器会自动下载该文件。
例如:window.open('http://example.com/download', '_blank');
使用<a>标签的download属性:

2.创建一个隐藏的<a>标签,设置href属性为后端返回的文件流的URL,同时设置download属性为文件的名称。然后使用JavaScript模拟点击该标签,触发文件下载。
例如:

const link = document.createElement('a');
link.href = 'http://example.com/download';
link.download = 'filename.ext';
link.click();

3.使用Fetch API或XHR请求:

  • 使用Fetch API或XHR(XMLHttpRequest)发送请求,获取后端返回的文件流,并使用Blob对象创建一个URL。然后将该URL传递给<a>标签的href属性,并使用JavaScript模拟点击该标签,触发文件下载。
  •  例如:
  • fetch('http://example.com/download')
      .then(response => response.blob())
      .then(blob => {
        const url = URL.createObjectURL(blob);
        const link = document.createElement('a');
        link.href = url;
        link.download = 'filename.ext';
        link.click();
      });
    

    这些方法可以根据具体的需求和项目环境选择使用。需要注意的是,后端返回的文件流需要正确设置Content-Disposition响应头,以指定文件的名称和下载方式。

    除了上述提到的方法,还有以下五种方法可以实现前端导出和下载后端返回的文件流:

4.使用HTML5的download属性:

  • 创建一个<a>标签,设置href属性为后端返回的文件流的URL,同时设置download属性为文件的名称。将该标签插入到DOM中,并使用JavaScript模拟点击该标签,触发文件下载。
    例如:

const link = document.createElement('a');
link.href = 'http://example.com/download';
link.download = 'filename.ext';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);

5.FileSaver.js库:

  • 引入FileSaver.js库,使用saveAs()方法将后端返回的文件流保存为本地文件。需要将后端返回的文件流转换为Blob对象。
  • 例如:
import { saveAs } from 'file-saver';

fetch('http://example.com/download')
  .then(response => response.blob())
  .then(blob => {
    saveAs(blob, 'filename.ext');
  });

使用iframe:

  • 创建一个隐藏的iframe,将其src属性设置为后端返回的文件流的URL。浏览器会自动下载该文件。
  • 例如:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值