0


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

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

  1. 使用window.open()方法:- 在前端使用window.open()方法打开一个新的窗口或标签页,并将后端返回的文件流作为URL传递给该方法。浏览器会自动下载该文件。- 例如:window.open('http://example.com/download', '_blank');
  2. 使用<a>标签的download属性:- 创建一个隐藏的<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响应头,以指定文件的名称和下载方式。

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

  1. 使用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);
  2. 使用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');});
  3. 使用iframe:- 创建一个隐藏的iframe,将其src属性设置为后端返回的文件流的URL。浏览器会自动下载该文件。- 例如:const iframe = document.createElement('iframe');iframe.style.display ='none';iframe.src ='http://example.com/download';document.body.appendChild(iframe);
  4. 使用FormData和XMLHttpRequest:- 创建一个FormData对象,将后端返回的文件流作为Blob对象添加到FormData中。然后使用XMLHttpRequest发送请求,将FormData作为请求体发送到后端进行下载。- 例如:const formData =newFormData();formData.append('file', blob,'filename.ext');const xhr =newXMLHttpRequest();xhr.open('POST','http://example.com/download');xhr.send(formData);
  5. 使用axios库:- 使用axios库发送请求,获取后端返回的文件流,并将其保存为本地文件。需要将后端返回的文件流转换为Blob对象。- 例如:import axios from'axios';axios.get('http://example.com/download',{responseType:'blob'}).then(response=>{const blob =newBlob([response.data]);const url =URL.createObjectURL(blob);const link = document.createElement('a'); link.href = url; link.download ='filename.ext'; link.click();});

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

标签: 前端

本文转载自: https://blog.csdn.net/ACCPluzhiqi/article/details/132514874
版权归原作者 一花一world 所有, 如有侵权,请联系我们删除。

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

还没有评论