【问题标题】:How to upload a file in Flask RESTful using cURL?如何使用 cURL 在 Flask RESTful 中上传文件?
【发布时间】:2018-04-09 12:56:10
【问题描述】:

我已经写了下Resource

from config import AWS_S3_BUCKET
from flask_api import status
from flask_restful import Resource, reqparse
from werkzeug.datastructures import FileStorage
from werkzeug.utils import secure_filename
import helpers


class FileUpload(Resource):

    def post(self):
        parse = reqparse.RequestParser()
        parse.add_argument('user_file', type=FileStorage, location='user_file')
        parse.add_argument('user_id', type=int, location='user_id')
        args = parse.parse_args()
        file = args['user_file']
        if file:
            file.filename = secure_filename(file.filename)
            url = helpers.upload_file_to_s3(file, AWS_S3_BUCKET)
            return {'url': url}, status.HTTP_201_CREATED

        return 'Invalid file', status.HTTP_400_BAD_REQUEST

在我尝试通过此命令在 cURL 中上传我的文件后:

curl -F 'user_file=@recovery.fstab' -F 'user_id=5' http://127.0.0.1:5000/files/new

在调试器中调用了端点,但所有字段:user_fileuser_id 都是 NoneType
我做错了什么?
P.S.recovery.fstab 文件位于home 目录中。

【问题讨论】:

    标签: python python-3.x curl flask-restful


    【解决方案1】:

    请参阅flask-RESTful docs

    Location 参数是 req 解析器从中获取值的位置。

    def post(self):
        parse = reqparse.RequestParser()
        parse.add_argument('user_file', type=FileStorage, location='files')
        parse.add_argument('user_id', type=int, location='args')
        ...
    

    【讨论】:

      猜你喜欢
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      相关资源
      最近更新 更多