后端传文件流到前端下载
时间: 2023-08-05 19:27:49 浏览: 98
在后端,你可以先将文件读取为文件流,然后将其传输到前端以供下载。以下是一个示例代码:
```python
@app.route('/download')
def download_file():
# 读取文件为文件流
file_stream = io.BytesIO()
with open('file_path', 'rb') as f:
file_stream.write(f.read())
file_stream.seek(0)
# 返回文件流到前端
response = make_response(send_file(file_stream, as_attachment=True, attachment_filename='file_name'))
response.headers['Content-Type'] = 'application/octet-stream'
return response
```
在前端,你可以使用 `fetch` 函数来获取文件流,并将其转换为文件对象,然后使用 `URL.createObjectURL` 函数来创建可下载链接。以下是一个示例代码:
```javascript
fetch('/download').then(response => {
response.blob().then(blob => {
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = 'file_name';
link.click();
});
});
```
这样,当用户点击下载链接时,浏览器将开始下载文件。
阅读全文