我使用 Flask RestX 作为 API,我想创建一个端点来使用以下 main.py 代码上传一些图像。我遇到的问题是我什至无法在端点中发布图像。当我尝试发布图片时,我希望看到良好的回应。
#app.py
from bson import ObjectId
from flask import Flask
from flask_jwt_extended import JWTManager
from flask_pymongo import PyMongo
import os
from flask_cors import CORS
from extensions import api, db, jwt
from namespaces.userController import nsUser
from namespaces.tablesController import nsTables
from namespaces.productsController import nsProducts
from namespaces.loginController import nsLogin
from namespaces.employerController import nsEmployer
from namespaces.uploadController import nsUpload
app = Flask(__name__)
CORS(app)
app.config["MONGO_URI"] = "mongodb+srv://user:[email protected]/?retryWrites=true&w=majority"
app.config["JWT_SECRET_KEY"] = "cookiemonster"
collection = db["user"]
api.init_app(app)
api.add_namespace(nsUser)
api.add_namespace(nsLogin)
api.add_namespace(nsTables)
api.add_namespace(nsProducts)
api.add_namespace(nsEmployer)
api.add_namespace(nsUpload)
mongo = PyMongo(app)
jwt = JWTManager(app)
# JWT Identity Loader
@jwt.user_identity_loader
def user_identity_lookup(user):
return user["id"]
# JWT User Lookup Callback
@jwt.user_lookup_loader
def user_lookup_callback(jwt_header, jwt_data):
identity = jwt_data["sub"]
user = collection.find_one({"_id": ObjectId(identity)})
return user
if __name__ == "__main__":
app.run()
每次我发布图片时都会出现上述错误。即使对于小图像。
{
"message": "The data value transmitted exceeds the capacity limit."
}
#nsUpload
from flask_restx import Namespace, Resource, reqparse
from werkzeug.datastructures import FileStorage
upload_parser = reqparse.RequestParser()
upload_parser.add_argument('images', location='files',
type=FileStorage, required=True, action="append")
nsUpload = Namespace("upload", description="Upload data ")
@nsUpload.route("/ceva")
class ceva(Resource):
@nsUpload.expect(upload_parser)
def post(self):
args = upload_parser.parse_args()
images = args['images']
如何使用 swagger UI 从浏览器上传多个图像并将它们添加到某处?
你想出来了吗?我发现了同样的问题,似乎
action="append"
与 FileStorage
配合得不好。如果删除它,就不会出现任何错误。如果您在设置 action="append"
时只上传一个文件,您每次都会收到此错误。对我来说似乎是一个错误。
我还需要实现多个文件上传,并且我在项目上有相同的堆栈。