为用户提供 'save-as' 选项以使用 Python 下载文件

providing a 'save-as' option to user for downloading a file using Python

我已通过将文件名作为 URL 参数传递给用户 API 来下载文件:

https://example.com/download_file/<filename>

在我的 python 代码中,我将使用文件名创建 header URL 并向另一台服务器发出请求:

import requests
url = 'http://<route>/{}'.format(filename)
headers = {'Content-Disposition':'attachment; filename="myfile.txt"','User-Agent' : 'baby_yoda','Content-Type' : 'application/octet-stream'}
r = requests.get(url, headers=headers)
return r

这不会在浏览器上向用户提供 'save as' 选项。我知道我遗漏了一些东西,但不确定我应该寻找什么。打印 'r' 仅显示“200 状态”。

尝试:

return r.text

requests.get returns一个对象,在不同的属性中包含了很多信息。因此,要访问生成的文件的主体,您需要添加:.text.

找到解决方案:

from flask import Response
import requests
url = 'http://<route>/{}'.format(filename)
headers = {'Content-Disposition':'attachment; filename="myfile.txt"','User-Agent' : 'baby_yoda','Content-Type' : 'application/octet-stream'}
r = requests.get(url, stream=True)
return Response(stream_with_context(r.iter_content(chunk_size=2048)), headers = headers)