Flask 文件上传返回错误 405 方法不允许
Posted
技术标签:
【中文标题】Flask 文件上传返回错误 405 方法不允许【英文标题】:Flask file upload returns error 405 method not allowed 【发布时间】:2021-08-07 05:13:07 【问题描述】:下面的代码是用于上传站点中事务的图像的端点正在工作,但由于某种原因,当文件附加到请求时它会不断返回 405 错误,但在没有文件时会正常工作。因此代码在本地和另一台服务器(使用类似的站点代码)上运行,但在控制服务器上运行。
@bp.route("/transaction/<int:transaction_id>/image", methods=['PUT'])
def upload_image_ex(transaction_id):
transaction = Transaction.query.get(transaction_id)
if not transaction:
return jsonify(status='failed', message='Transaction Not Found!')
if transaction.status != 0:
return jsonify(status='failed', message='Transaction No Longer Pending!')
if 'images[]' not in request.files:
return jsonify(status='failed', message='No image uploaded!')
files = request.files.getlist('images[]')
for file in files:
print("dayer")
unique_filename = str(uuid.uuid4()) + '.' + \
file.filename.rsplit('.', 1)[1].lower()
print("dayer")
file.save(os.path.join(Config.POST_UPLOAD_FOLDER, unique_filename))
print("dayer")
save_image(
unique_filename,
file,
Config.POST_UPLOAD_FOLDER,
Config.BANNER_SIZE,
isByte=False
)
img = TransactionImage()
img.img = unique_filename
img.transaction_id = transaction_id
db.session.add(img)
db.session.commit()
return jsonify(
status='success',
message='Transaction Image Uploaded',
data=TransactionSchema().dump(transaction)
)
【问题讨论】:
【参考方案1】:-
检查你的前端调用,如果方法是
PUT
。
检查服务器上的反向代理,如 nginx
,如果它改变了调用的位置或方法。
尝试将POST
、PATCH
... 方法添加到您的路由中以解决问题。 @bp.route("/transaction/<int:transaction_id>/image", methods=['PUT', 'POST', 'PATCH'])
【讨论】:
以上是关于Flask 文件上传返回错误 405 方法不允许的主要内容,如果未能解决你的问题,请参考以下文章
不允许使用 GET405 方法(JavaScript 和 Flask)