【问题标题】:Flask access request data when uploading file with angular使用角度上传文件时烧瓶访问请求数据
【发布时间】:2016-09-05 01:06:48
【问题描述】:

我正在使用angular 上传文件并尝试访问flask 中的上传文件。 这没问题,工作正常。但是,当我添加更多请求参数时,我似乎无法在 flask request 对象中找到它们。

例如,使用ngFileUpload (https://github.com/danialfarid/ng-file-upload) 上传文件我可以像这样指定更多元信息:

$scope.upload = function (file) {
    Upload.upload({
        url: '/api/upload',
        data: {file: file, 'username': $scope.username}
    })
};

username 是额外的元信息。

这是烧瓶代码(使用 Flask-Restful):

from flask import Flask, request, Response
from flask.ext.restful import Api, Resource

ALLOWED_EXTENSIONS = {'csv'}
def allowed_file(fn):
    return '.' in fn and fn.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS

app = Flask(__name__)
api = Api(app)

class Upload(Resource):
    def post():
        file = request.files['file']
        fn = file.filename
        if file and allowed_file(fn):
            try:
                # code for saving file
                return Response(status=200)
            except:
                return Response(status=500)
        return Response(status=500)

api.add_resource(Upload, '/api/upload')

在烧瓶中,我可以通过request.files['file'] 访问file,但找不到username 信息/变量。

这在烧瓶中是不可能的吗,我错过了什么,或者这里发生了什么?

【问题讨论】:

  • 你能分享你的烧瓶代码吗?绝对可以访问flask中的url参数,但为了帮助您,我们需要查看路由代码。
  • @ciacicodeflask 代码很简单,但我按要求添加了。
  • 有人找到解决方案了吗?我遇到了和蒂姆一样的问题。我在烧瓶应用中添加了 CORS,但似乎找不到 username 参数。

标签: python angularjs file-upload request


【解决方案1】:

我实际上认为@ciacicode 向您询问您的 python 代码是正确的。

Angular 调用 Python 时,您可能遇到了 CORS 违规。

  1. 添加导入

查看 Flask-CORS:http://flask-cors.corydolphin.com/en/latest/index.html

from flask.ext.cors import CORS

  1. 将 CORS 添加到您的应用中

对代码的简单添加:

app = Flask(__name__)
cors = CORS(app)
api = Api(app)

添加 CORS 使您的代码示例为我运行。

【讨论】:

    【解决方案2】:

    如果 CORS 没有为您做任何事情,请使用 request.values['username']

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      相关资源
      最近更新 更多