我是python和appengine的新手。所以我有这个简单的问题。我想发送服务器数据并让服务器将其作为文件下载发送回来。如果我在页面加载之前下载文件,我可以下载文件. 但在那之后我无法下载。这是我现在拥有的:
class UploadHandler(webapp.RequestHandler):
def get(self):
try:
xml=parseString(self.request.body)
result=sanitize(xml)
if result == None:
text=xml.toxml('UTF-8')
name="file.xml"
self.response.out.write(text)
self.response.headers.add_header('Method','get')
self.response.headers.add_header('Content-Type','text/xml')
self.response.headers.add_header('name',name)
self.response.headers.add_header('Content-Disposition','attachment')
self.response.headers.add_header('filename',name)
self.response.headers.add_header('Content',text)
except:
print self.request.body
这是调用它的javascript:
var text=getMarkup();
new Ajax.Request("http://localhost:8080/file",{
method:'get',
contentType:"text",
postBody:text,
onSuccess:function(){
console.log(transport.responseText);
},
onFailure: function(){
console.log('Could not load file...');
},
onException: function(req,exception) {
console.log(exception);
return true;
},
});
我已经尝试以多种不同的方式更改这两个部分。我可以得到响应,但我无法让它去下载。如果我对主页使用相同的代码,它仍然可以工作。我错过了什么?
终于明白了....我在这里使用此页面上的示例, 只是我将 url 作为响应发回,并在“onsuccess”处理程序中使用 window.open 来打开它。
blobstore的问题是文件保存在服务器上,其他人可以查看它们,所以我最好的解决方案是使用全局变量来保存帖子中的数据,然后将其传递给get并从javascript调用get使用 window.open()。