我写了下一个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_file
和user_id
都是NoneType
。
我做错了什么?
P.S。 recovery.fstab
文件位于home
目录中。
答案 0 :(得分:1)
位置参数是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')
...