Python:从RestAPI下载zip文件
第三方RestAPI提供服务器日志文件,目前我们正在使用curl命令下载日志文件,如Python:从RestAPI下载zip文件,python,flask,python-requests,Python,Flask,Python Requests,第三方RestAPI提供服务器日志文件,目前我们正在使用curl命令下载日志文件,如 curl -H "X-Auth-Token: XXXXXXXXXXXXXXXXXXXXXXXXXX" https://host_address/api/v3.0/admin/logs -o logs.zip 但我正在尝试使用Flask/Python创建简单的仪表板 以下是我的路线Python/Flask代码: @app.route('/download/server/logs') def download_l
curl -H "X-Auth-Token: XXXXXXXXXXXXXXXXXXXXXXXXXX" https://host_address/api/v3.0/admin/logs -o logs.zip
但我正在尝试使用Flask/Python创建简单的仪表板
以下是我的路线Python/Flask代码:
@app.route('/download/server/logs')
def download_log():
import requests
from flask import send_file
res = requests.get('http://<rest_api_host>/v1.2/admin/logs', stream=True)
return send_file(
res.content,
attachment_filename='console_log.zip',
mimetype='application/zip'
)
我使用PyCharm设置断点/调试器,可以看到res.content
中包含二进制数据,但我无法找出这里的错误
这是一张简单的图表,解释了我要做的事情,
更新:回答:我采用了以下方法,它以非常有效的方式解决了我的问题
@app.route('/download/server/logs')
def download_log():
import requests
from flask import Reponse
res = requests.get('http://<rest_api_host>/v1.2/admin/logs', stream=True)
return Response(
res.iter_content(chunk_size=1024),
direct_passthrough=True
)
@app.route(“/download/server/logs”)
def下载日志():
导入请求
从进口回复
res=requests.get('http:///v1.2/admin/logs,stream=True)
返回响应(
res.iter\u内容(块大小=1024),
直接传递=真
)
我不确定您是否给出了正确的错误消息。但是我认为,如果您将字符串传递给send\u file()
方法,那么它将不起作用。您需要传递二进制数据
如果将res.content
包装到io.BytesIO()
中,并将其传递给send\u file()
方法,我相信它应该可以工作
例:
@app.route(“/download/server/logs”)
def下载日志():
导入请求
从flask导入发送\u文件
输入io
res=requests.get('http:///v1.2/admin/logs,stream=True)
返回发送文件(
io.BytesIO(内容物),
附件\u filename='console\u log.zip',
mimetype='application/zip'
)
希望能有帮助 如果要下载文件,请尝试烧瓶的响应方法:
import requests
from flask import Response
@app.route('/download/server/logs')
def download_log():
res = requests.get('http://<rest_api_host>/v1.2/admin/logs')
return Response(res.content,headers = dict(res.headers))
导入请求
从烧瓶导入响应
@app.route(“/download/server/logs”)
def下载日志():
res=requests.get('http:///v1.2/admin/logs')
返回响应(res.content,headers=dict(res.headers))
从本地文件夹下载
def download_Object():
try:
srcFileName="bulk_file.zip"
with open(srcFileName, 'wb') as f:
f.write(srcFileName)
except Exception as e:
print(e)
你有多余的逗号吗<代码>从flask导入,发送_文件@AdriVelaz谢谢,这是在这里发布时的打字错误嗨,你的问题发生了什么?进展如何?@NimeshkaSrimal谢谢你的帮助,我用另一种方式解决了它。@n33rma添加此项后,你收到了什么错误消息?你能告诉我你是如何运行这个应用程序的吗?
import requests
from flask import Response
@app.route('/download/server/logs')
def download_log():
res = requests.get('http://<rest_api_host>/v1.2/admin/logs')
return Response(res.content,headers = dict(res.headers))
def download_Object():
try:
srcFileName="bulk_file.zip"
with open(srcFileName, 'wb') as f:
f.write(srcFileName)
except Exception as e:
print(e)
try:
srcFileName="filename"
with open(srcFileName, 'wb') as f:
f.write(srcFileName)
except Exception as e:
print(e)