从基于Flask的Python服务器下载文件
我正在尝试使work成为我在以下URL中找到的代码: 我的目标是,当用户访问基于Flask的Python服务器上的web服务时,能够在web浏览器上下载文件 因此,我编写了以下代码:从基于Flask的Python服务器下载文件,python,flask,werkzeug,webclient-download,Python,Flask,Werkzeug,Webclient Download,我正在尝试使work成为我在以下URL中找到的代码: 我的目标是,当用户访问基于Flask的Python服务器上的web服务时,能够在web浏览器上下载文件 因此,我编写了以下代码: @app.route("/api/downloadlogfile/<path>") def DownloadLogFile (path = None): if path is None: self.Error(400) try: with open(pa
@app.route("/api/downloadlogfile/<path>")
def DownloadLogFile (path = None):
if path is None:
self.Error(400)
try:
with open(path, 'r') as f:
response = make_response(f.read())
response.headers["Content-Disposition"] = "attachment; filename=%s" % path.split("/")[2]
return response
except Exception as e:
self.log.exception(e)
self.Error(400)
我将Flask和Werkzeug软件包更新到最新版本,但没有成功
如果有人有主意,那就太好了
提前感谢解决此问题的最佳方法是在flask中使用已预定义的助手函数:
@app.route("/api/downloadlogfile/<path>")
def DownloadLogFile (path = None):
if path is None:
self.Error(400)
try:
return send_file(path, as_attachment=True)
except Exception as e:
self.log.exception(e)
self.Error(400)
@app.route(“/api/downloadlogfile/”)
def下载日志文件(路径=无):
如果路径为“无”:
自身错误(400)
尝试:
返回发送文件(路径,如附件=True)
例外情况除外,如e:
self.log.exception(e)
自身错误(400)
文件系统上的这些文件在哪里?如果您不是动态生成文件,为什么不使用flask.send\u file()
?即使是动态生成,最佳做法是将文件保存到磁盘,然后通过Apache或nginx提供,因为web服务器在提供文件方面比flask更高效。@donkopotamus这些文件位于Python web服务器根目录下的“日志”存储库中。因此它们不是动态生成的@KDawG我已经尝试使用flask.send_file,但结果相同:“'Response'对象不可编辑”。什么是self?可以使用send_文件,方法是从flask import send_文件中导入,python中的self基本上等同于javascript中的“this”。在定义类时使用,这里只有一个函数,而this
没有传递给函数,因此可以理解,这里对this
的引用没有任何意义。
@app.route("/api/downloadlogfile/<path>")
def DownloadLogFile (path = None):
if path is None:
self.Error(400)
try:
return send_file(path, as_attachment=True)
except Exception as e:
self.log.exception(e)
self.Error(400)