2
我試圖做的工作,我發現在這個URL代碼:http://code.runnable.com/UiIdhKohv5JQAAB6/how-to-download-a-file-generated-on-the-fly-in-flask-for-python從基於瓶的Python服務器上下載文件
我的目標是能夠下載一個網頁瀏覽器的文件時的用戶可以訪問基於Flask的Python服務器上的Web服務。
所以我寫了下面的代碼:
@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)
但這代碼似乎並沒有工作。事實上,我得到的是我沒能修復的錯誤:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\gevent\pywsgi.py", line 508, in handle_one_response
self.run_application()
File "C:\Python27\lib\site-packages\geventwebsocket\handler.py", line 88, in run_application
return super(WebSocketHandler, self).run_application()
File "C:\Python27\lib\site-packages\gevent\pywsgi.py", line 495, in run_application
self.process_result()
File "C:\Python27\lib\site-packages\gevent\pywsgi.py", line 484, in process_result
for data in self.result:
File "C:\Python27\lib\site-packages\werkzeug\wsgi.py", line 703, in __next__
return self._next()
File "C:\Python27\lib\site-packages\werkzeug\wrappers.py", line 81, in _iter_encoded
for item in iterable:
TypeError: 'Response' object is not iterable
更新我的瓶和WERKZEUG包的最後一個版本,但沒有成功。
如果有人有一個想法,它會很好。
在此先感謝
哪裏可以找到文件系統上的這些文件? – donkopotamus
如果你不動態生成文件,那麼爲什麼不使用'flask.send_file()'? –
即使您動態生成最佳做法,也是將文件保存到磁盤,然後通過Apache或nginx提供,因爲網絡服務器在提供文件比燒瓶更有效率。 –