在Flask中使用HTTP 307临时重定向将文件上载到第三方API

在Flask中使用HTTP 307临时重定向将文件上载到第三方API,flask,request,http-status-codes,http-redirect,http-status-code-307,Flask,Request,Http Status Codes,Http Redirect,Http Status Code 307,我有一个场景,我必须将一个文件从flask应用程序上传到第三方API。我已将所有API请求包装在Flask中,以控制API的使用。为此,我将通信量从主路由重定向到具有http 307状态的api包装器路由,以保留请求主体,并在api包装器中使用请求将其发布到第三方api端点 问题是只有小于100KB的文件通过重定向请求发送,大于100KB的文件在发送阶段以某种方式终止 307重定向和有效负载大小是否有任何限制 我试图通过观察网络定时堆栈跟踪进行调试,从那里看来,请求似乎在发送阶段被丢弃 主蓝图

我有一个场景,我必须将一个文件从flask应用程序上传到第三方API。我已将所有API请求包装在Flask中,以控制API的使用。为此,我将通信量从主路由重定向到具有http 307状态的api包装器路由,以保留请求主体,并在api包装器中使用请求将其发布到第三方api端点

问题是只有小于100KB的文件通过重定向请求发送,大于100KB的文件在发送阶段以某种方式终止

307重定向和有效负载大小是否有任何限制

我试图通过观察网络定时堆栈跟踪进行调试,从那里看来,请求似乎在发送阶段被丢弃

主蓝图

@main.route('/upload/',methods=['POST','GET'])  
def upload(): 
    #for ajax call
    if request.method == 'POST'
        return redirect(url_for('api.file_push'),code=307)
    else:
        return render_template('file-upload.html')
API蓝图

@api.route('/upload/',methods=['POST'])
def file_push():
    upload_file = request.files['file']
    filename = urllib.parse.quote(upload_file.filename)
    toUpload = upload_file.read()
    result=requests.post(apiInterfaces.FILE_UPLOAD_INTERFACE+'/'+filename,files{'file':toUpload})
    return result

是的,我可以直接从主路由向API端点发送post请求,但我不想,它会破坏我的系统设计和体系结构。

您介意解释一下它将如何破坏您的“系统设计和体系结构”吗?我想要一个单独的蓝图来处理所有第三个API的使用,以便我可以将其用于移动开发。然后,不要在主应用程序中添加上载路径,您已经在API蓝图中拥有它,请在应用程序中注册该蓝图。你为什么要引入跳跃?为什么要将包装器放在main中,然后重定向?是的,我可以这样做。我可以用那种方法解决那个问题。但是对于一个大文件大小的重定向终止来说是很奇怪的。我想知道为什么,如何,何时?它可能是bug或我可能遗漏的东西。@ndtreviv没有。我试过调试,到处搜索,但没有运气。所以我选择了直接使用API而不重定向。你介意解释一下它将如何破坏你的“系统设计和架构”吗?我想要一个单独的蓝图来处理所有第三个API的使用,这样我就可以将其用于移动开发。然后不要在主界面中添加上载路由,你已经在API蓝图中有了它,在应用程序中注册该蓝图。你为什么要引入跳跃?为什么要将包装器放在main中,然后重定向?是的,我可以这样做。我可以用那种方法解决那个问题。但是对于一个大文件大小的重定向终止来说是很奇怪的。我想知道为什么,如何,何时?它可能是bug或我可能遗漏的东西。@ndtreviv没有。我试过调试,到处搜索,但没有运气。因此,选择了直接使用API,而无需重定向。