【发布时间】:2013-10-26 23:15:29
【问题描述】:
我在 GAE 上运行 Flask。我在提供文件时遇到问题。一切似乎都正确,但我的浏览器中没有弹出任何提示我保存它并且日志控制台中没有错误:
@app.route("/submit", methods=["GET"])
def submitChecklist():
... generate json
headers = {'content-type': 'application/json', 'charset':'UTF-8'}
r = requests.post(url, data=json.dumps(jsonstring), headers=headers, stream=True)
print 'payload: ' + r.text
response = make_response(r.text)
response.headers["Content-Disposition"] = "attachment; filename=exportChecklists.xml"
return response
更新
我认为问题可能出在 javascript 方面,这是我目前拥有的,它没有提示下载:
$.get('submit',
dat,
function(data) {
if (data.success==1)
console.log("done")
else
alert("There is an exception on server side while submitting the response!")
},'text');
我觉得解决方案是here,但我想不通。
更新 #2
我仍然不知道如何做到这一点,所以我只提供一个文件。虽然下面的解释总的来说很好,但我不知道如何使用 jQuery 只提供 1 个文件。有人可以提供一个如何做到这一点的例子。
感谢您的帮助。
【问题讨论】:
-
浏览器响应的标题中显示了什么?
-
'HTTP/1.1 200 OK 内容类型:文本/html; charset=utf-8 内容配置:附件;文件名=exportChecklists.xml 缓存控制:无缓存过期:格林威治标准时间 1990 年 1 月 1 日星期五 00:00:00 内容长度:481 服务器:开发/2.0 日期:2013 年 10 月 27 日星期日 05:58:03 GMT'
-
另外,r.text 是字符串形式的 xml,我创建的响应是否错误?
-
我也明白了,
http://localhost:8080/submit?model=123&Procedures%5B0%5D=%7B%22cIndex%22%3A%221%22%2C%22title%22%3A%22Checklist1%22%2C%22proc%22%3A%22123%22%2C%22state%22%3A%22123%22%7D如果我在调试控制台中单击它会提示下载...但这是我能够做到的唯一方法。 -
您必须将 window.location 设置为下载 URL。 JavaScript 无法将文件保存到您的计算机。
标签: jquery python google-app-engine flask response