问题很简单:我需要在提交表单时下载一个文件,当表单被提交时发生了一个ajax调用,让我能够从服务器端获取表单数据来构建一个文件,然后以链接的形式在一个警告框中发送。但事实上,我的老板希望直接下载该文件,而不是通过一个警告框中的链接。因此,我必须确保文件在tornado(web)服务器端可用。
服务器端代码似乎没有问题,但是客户端(extjs4.1)真是一场噩梦。以下是我的ajax调用代码,但它不起作用:
self.set_header('Content-Type', 'application/octet-stream')
self.set_header('Content-Disposition', 'attachment; filename=clients_counter.zip')
with open("static/clients_counter.zip", 'r') as f:
while True:
data = f.read()
if not data:
break
self.write(data)
self.finish()
服务器端代码似乎没有问题,但是客户端(extjs4.1)真是一场噩梦。以下是我的ajax调用代码,但它不起作用:
Ext.Ajax.request({
method : "GET",
url : 'http://whatever.com/count?client='+client+'&start='+start+'&end='+end,
timeout : 30000,
success :
function (response) {
//Ext.Msg.alert(response.responseText);
desktop.getWindow('count-win').doClose();
return response;
}//handler,
failure :
function(response) {
alert("Wrong request");
}});