我在Heroku上运行了Flask应用程序,我需要下载从数据库生成的CSV文件。由于Heroku不允许在运行的dyno期间保存文件,因此我改用了IO流(而且我也不需要服务器上的csv文件,应该将其发送给用户):
#...necessary imports
# alex_dict is a python dictionary created from the database
file = StringIO()
for key, value in alex_dict.items():
line = [key, value]
csv.writer(file, delimiter = ";").writerow(line)
file.seek(0)
return send_file(file, mimetype="text/csv", attachment_filename="test.csv", as_attachment=True)
运行flask应用程序时,确实将CSV文件“ test.csv”接收到了我的下载文件夹中,但是它为空。
如果我返回file.get_values(),则将csv格式的内容直接输入浏览器,因此显然文件生成有效,但是不会通过flask send_file方法进行传输。