当前位置: 首页 > 知识库问答 >
问题:

Google App Engine上的Python Flask-路由没有响应

壤驷阳波
2023-03-14

我正在用python为Google app Engine创建一个web应用程序。第一条路线工作正常,加载主页:

@app.route('/')
def index():
    return render_template('index.html')

我ndex.html包含一个表单供用户上传文件。现在,这是一个单页应用程序,因此表单通过javascript重定向到要提交的不可见iframe。当python处理完文件后,iframe会调用父文档中的函数来更改显示的内容。

重定向表单的Javascript函数:

function redirect(elemid, tgt, sh1, sh2){
        document.getElementById(elemid).target = tgt;
        document.getElementById(elemid).submit();

        var callFunction;
        callFunction = show_and_hide(sh1, sh2);
    }

处理提交表单的烧瓶路径:

 @app.route('/upload', methods=['POST'])
 def upload_file():
    #do something with file...    
    return response

有两件事很奇怪:(1)这一切都可以在localhost上正常工作。表单重定向到iframe并提交,处理文件,响应触发父文档的操作。只是gae似乎对它不起作用。(2) 当我从upload\u file()函数中删除所有内容,使其只返回“hello world”时,仍然没有发生任何事情。我还有第二个函数,它隐藏upload div并显示加载屏幕,它可以工作,但之后什么都没有。

我以前在一个php站点上使用过app engine,它需要我的应用程序。yaml将为我的应用程序上的每个文件提供说明,但由于只有一个页面可加载,我的应用程序。yaml文件仅包含以下内容:

runtime: python37

env_variables:
  CLOUD_STORAGE_BUCKET: mybucket.appspot.com

还有,我的要求。txt填写如下:

Flask == 1.1.1
Flask-SQLAlchemy == 2.4.0
matplotlib == 3.1.1
NumPy == 1.17.2
SciPy == 1.3.1

google-cloud-storage==1.13.2
gunicorn==19.9.0

我怀疑这与app有关。yaml和iframes,但我不知道如何解决这个问题(或者这是否就是问题所在)。

我真的很感激任何帮助!提前感谢您!

更新:我向index.html添加了一个表单,该表单采用相同的操作和方法,但不重定向到iframe作为测试。当我提交此表单时,我收到消息,“内部服务器错误-服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序中存在错误。”

更新2:当我从/上传路由中删除所有代码并将其更改为“hello world”时,它确实会返回“hello world”。

更新3:当我检查iframe元素时,可以看到它有一条消息说“请求实体太大,您的客户端发出的请求太大”。

共有1个答案

巫马令
2023-03-14

看来我误解了这个问题。GAE不允许文件上传

https://cloud.google.com/appengine/docs/standard/python/blobstore/

 类似资料:
  • 问题内容: 我正在学习AngularJS,有一件事让我很烦。 我用来为我的应用程序声明路由规则: 但是当我在浏览器中导航到我的应用程序时,我看到的不是。 所以我的问题是为什么AngularJS将此hash添加到url中?有可能避免它吗? 问题答案: 实际上,对于非HTML5浏览器,您需要#(#标签)。 否则,他们将只通过提到的href对服务器进行HTTP调用。#是一个旧的浏览器短路问题,它不会触发

  • 问题内容: 我正在学习AngularJS,有一件事让我很烦。 我用来为我的应用程序声明路由规则: 但是当我在浏览器中导航到我的应用程序时,我看到的不是。 所以我的问题是为什么AngularJS将此哈希添加到url中?有可能避免它吗? 问题答案: 实际上,对于非HTML5浏览器,您需要#(#标签)。 否则,他们将只通过提到的href对服务器进行HTTP调用。#是一个旧的浏览器短路问题,它不会触发请求

  • 我已经从3.11切换到Openshift 4.3。我在3.11中使用了入口,并包含了tls。hosts部分使用默认名称空间中的默认证书,这样创建的路由将得到保护。 但在4.3中,不允许添加此“tls.hosts”部分。那么,如果没有这一部分,我如何获得安全路线?有办法吗?或者我必须使用路线?4.3中的入口如下 我在创建入口时没有看到任何错误,但它创建的路由不安全。它 http://xxxxxx/a

  • 问题内容: 我想为瘦客户端开发html5 SPA应用程序。无法在其上启动任何Web服务器。如果没有Web服务器,我将无法使路由工作。 我的index.html 我的app.js 我正在Chrome的计算机上本地测试此代码。数据绑定的工作原理很吸引人,但无法链接到登录页面。它通向{X}:\ login。所以我的问题是:是否可以使其与Web服务器一起使用?其次,我想完成它所缺少的是什么? 问题答案:

  • 我试图使用react router将props从app.jsx传递到某个路由组件,但出现以下错误

  • 有人知道怎么解决这个问题吗?