LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

后端返回文件流,前端怎么导出、下载(8种方法可实现)

freeflydom
2023年10月28日 16:48 本文热度 1101

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


使用window.open()方法:


在前端使用window.open()方法打开一个新的窗口或标签页,并将后端返回的文件流作为URL传递给该方法。浏览器会自动下载该文件。

例如:window.open('http://example.com/download', '_blank');

使用<a>标签的download属性:


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

例如:

const link = document.createElement('a');

link.href = 'http://example.com/download';

link.download = 'filename.ext';

link.click();


使用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响应头,以指定文件的名称和下载方式。


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


使用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);


使用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。浏览器会自动下载该文件。

例如:

const iframe = document.createElement('iframe');

iframe.style.display = 'none';

iframe.src = 'http://example.com/download';

document.body.appendChild(iframe);


使用FormData和XMLHttpRequest:


创建一个FormData对象,将后端返回的文件流作为Blob对象添加到FormData中。然后使用XMLHttpRequest发送请求,将FormData作为请求体发送到后端进行下载。

例如:

const formData = new FormData();

formData.append('file', blob, 'filename.ext');


const xhr = new XMLHttpRequest();

xhr.open('POST', 'http://example.com/download');

xhr.send(formData);



使用axios库:


使用axios库发送请求,获取后端返回的文件流,并将其保存为本地文件。需要将后端返回的文件流转换为Blob对象。

例如:

import axios from 'axios';


axios.get('http://example.com/download', { responseType: 'blob' })

  .then(response => {

    const blob = new Blob([response.data]);

    const url = URL.createObjectURL(blob);

    const link = document.createElement('a');

    link.href = url;

    link.download = 'filename.ext';

    link.click();

  });

这些方法提供了多种选择来实现前端导出和下载后端返回的文件流。根据具体的需求和项目环境,选择适合的方法进行实现。

————————————————

版权声明:本文为CSDN博主「一花一world」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/ACCPluzhiqi/article/details/132514874



该文章在 2023/10/28 16:48:37 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved