Google app engine 谷歌应用程序引擎:下载一个文件给用户';s本地下载文件夹

Google app engine 谷歌应用程序引擎:下载一个文件给用户';s本地下载文件夹,google-app-engine,Google App Engine,我无法在Google App Engine中将文件下载到用户的本地下载文件夹。我想我已经按照说明做了。下面是服务器代码,其中headers语句应该使响应转到用户的下载文件夹。相反,它被发送到发出GET请求的JavaScript函数,与注释掉headers语句时的行为相同。虽然我不知道有什么区别,但self.response.out.write和self.response.write的行为是一样的。除了get,我还尝试了put、post、options和delete,它们的行为都是一样的。我已经没

我无法在Google App Engine中将文件下载到用户的本地下载文件夹。我想我已经按照说明做了。下面是服务器代码,其中headers语句应该使响应转到用户的下载文件夹。相反,它被发送到发出GET请求的JavaScript函数,与注释掉headers语句时的行为相同。虽然我不知道有什么区别,但self.response.out.write和self.response.write的行为是一样的。除了get,我还尝试了put、post、options和delete,它们的行为都是一样的。我已经没有可以尝试的排列了

# -*- coding: utf-8 -*-
import webapp2 as web
class ApiUser(web.RequestHandler):
    def get(self, user): # fails with get, put, post, options, delete
        source = 'a = 5'
        self.response.headers['Content-Disposition'] = 'attachment; filename='+'test.py' # no effect
        self.response.write(source)  # same effect as self.response.out.write(source)
app = web.WSGIApplication([ (r'/api/user/([^/]+)', ApiUser) ], debug=True)
以下是发出请求的客户端代码:

$(function () {
"use strict";
function apiError(message) { console.log('ERROR', message) }

function apiGet(route, callback) {
    $.ajax({
        type: 'GET',
        url: route,
        //dataType: 'json', // SyntaxError: Unexpected token a in JSON at position 0
        success: callback,
        error: function (xhr, message, exc) {
            apiError("API " + message + " getting " + url + ": " + exc)
        }
    })
}

$('#submit').click(function() {
    var route = "api/user/"+'Testing'
    apiGet(route, function(ret) {
        console.log('callback', ret)
    })
})
})

以下是HTML文件:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<a>JQuery Test Page</a><br>
<input id="submit" type="button" value="Submit"/>
<script type="text/javascript" language="javascript" src="lib/jquery/IDE/jquery.min.js"></script>
<script type="text/javascript" language="javascript" src="ide.js"></script>
</body>
</html>
目录结构如下所示:

  app.yaml
  api.py
      /ide (ide.js and index.html)
      /lib (contains the jquery library)

这并没有立即回答我的问题,但最终导致了这样一个事实:我在JS文件中需要做的就是插入apiGet(路由,函数(ret))中语句window.location=route。谢谢!

指向解决方案的链接并没有立即回答我的问题,但最终导致了这样一个事实,即我需要在JS文件中做的只是在apiGet(route,function(ret)中插入语句window.location=route。谢谢!
  app.yaml
  api.py
      /ide (ide.js and index.html)
      /lib (contains the jquery library)