我有这样的代码:
from flask import Flask, render_template, redirect, request, url_for, session
app = Flask(__name__)
@app.route('/')
def index():
tmplt = session.get('template', 'No template')
return render_template('index.html', template=tmplt.decode('utf-8'))
@app.route('/template', methods=['POST'])
def upload_template():
session['template'] = request.files['template'].read()
return redirect(url_for('index'))
if __name__ == '__main__':
app.secret_key = '\x0cw1\xd4\xd5\x80%O?q \xcfQrrk\xa3H\xc0[J\xae<\xc3]\xe6\x10\xc0-\xf8S\x08P4[3]PrK\xa9\xf1'
app.run(debug=True)
我希望,在成功执行POST /template
后,变量tmplt
将等于上传的内容。但是,它是空的。调试显示重定向之前session['template']
按预期方式存储文件内容。
任何人都可以在这里建议问题是什么? Flask docs和谷歌搜索没有帮助:(
答案 0 :(得分:3)
查看sessions implementation,似乎只是将所有会话数据保存到cookie中。
根据此answer,最大cookie大小为4KB。如果您的文件大于该文件,则浏览器可以拒绝该cookie。
在任何情况下,将文件存储到会话中都不是一个好主意。