查了 doc 的一个 send_from_directory 方法但是跑不起来
上传文件代码
@app.route('/saveFile', methods=['POST'])
def saveObjZip():
try:
# We will save the zip file to disk.
myfile = flask.request.files['myFile']
filename_ = str(datetime.datetime.now()).replace(' ', '_') + \
werkzeug.secure_filename(myfile.filename)
filename = os.path.join(UPLOAD_FOLDER, filename_)
myfile.save(filename)
logging.info('Saving to %s.', filename)
except Exception as err:
logging.info('Uploaded file open error: %s', err)
return err;
1
loading 2015-12-04 18:19:31 +08:00 via Android
如果下载不需要权限控制,建议 redirect 到 nginx 的静态文件夹。
因为 flask 这种是阻塞的方式,如果只有一个线程,有人下载,你的服务将在下载全程不可用。 |
2
loading 2015-12-04 18:27:46 +08:00 via Android
之前我问过一个相关的。
http://v2ex.com/t/197801#reply4 |
3
xavierskip 2015-12-04 21:48:00 +08:00
确实下载文件不太应该用 web 框架来处理,直接交给 web server 当作静态文件处理。
你说的不知道我理解对没有,例如就是返回数据 A.txt 文本文件内容,让浏览器以下载文件来处理,而不是直接给你在浏览器中打开了。 需要在返回的 http header 中添加"Content-Disposition" 你看一下这里 https://github.com/xavierskip/hupu_Album_Downloader/blob/master/web/index.py#L128 |
4
ericls 2015-12-05 02:59:55 +08:00
flask 可以配合 nginx 的内部路由 很好的实现文件下载功能
|