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

使用window.open()方法:
使用标签的download属性:
const link = document.createElement('a');
link.href = 'http://example.com/download';
link.download = 'filename.ext';
link.click();
使用Fetch API或XHR请求:

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属性:

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库:
import { saveAs } from 'file-saver';
fetch('http://example.com/download')
.then(response => response.blob())
.then(blob => {
saveAs(blob, 'filename.ext');
});
使用iframe:
const iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.src = 'http://example.com/download';
document.body.appendChild(iframe);
使用FormData和XMLHttpRequest:
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库:
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();
});
这些方法提供了多种选择来实现前端导出和下载后端返回的文件流。根据具体的需求和项目环境,选择适合的方法进行实现。
上一篇:很好看的爱心表白代码(动态)