我正在尝试将图片上传到Firebase存储空间。图像通过HTTP Post传递。请求使用Flask处理。我似乎无法正确上传图像。当我指定图像的位置时,我可以成功上传图像,排除Firebase或该代码的问题。我试图获取文件位置,但不幸的是Flask已经阻止了这个安全性(可能是一件好事)。在存储图像之前是否需要处理图像?
我正在使用Postman发送POST请求。
@message_api.route('/messenger/message/send/picture/individual', methods=['POST'])
def send_individual_picture():
picture = request.files['picture']
firebase.storage().put(picture)
答案 0 :(得分:1)
由于firebase.storage().put()
需要文件路径,因此您需要先将上传保存到文件中,然后才能存储。
现在你有了这个:
@message_api.route('/messenger/message/send/picture/individual', methods=['POST'])
def send_individual_picture():
picture = request.files['picture']
firebase.storage().put(picture)
在此之后,picture
是Werkzeug的Filestorage
类的一个实例,可以将其视为文件描述符。你可以从中做read()
之类的东西。
由于您的代码确实将文件视为瞬态文件而您之后不需要它,因此您可以使用NamedTemporaryFile
创建一个带有名称的临时文件。然后,您可以删除临时文件。
import os
import tempfile
@message_api.route('/messenger/message/send/picture/individual', methods=['POST'])
def send_individual_picture():
picture = request.files['picture']
temp = tempfile.NamedTemporaryFile(delete=False)
picture.save(temp.name)
firebase.storage().put(temp.name)
# Clean-up temp image
os.remove(temp.name)