Получение и отображение изображения из GridFS Python Flask Mongodb - PullRequest
3 голосов
/ 11 марта 2020

Привет! В настоящее время я использую Python Flask для хранения своих изображений, я успешно использую gridfs для хранения изображений в mongodb, но сейчас я не уверен, как получить изображения.

I поймите, что поскольку файлы большие, они будут разбиты на куски в файле fs.chunks. Я могу запросить результаты, так как я создал идентификатор для всех своих изображений и прикрепил его к fs.files, и я просто буду использовать objectID для запроса своих коллекций fs.chunks. Однако после этого я не уверен, как отображать изображения.

Кто-нибудь знает, как получить изображения из gridfs в mongodb для python flask.

Ответы [ 2 ]

1 голос
/ 18 марта 2020

Привет, поэтому я нашел способ получить изображения из mongodb, используя python flask.

Так мы настроили соединение mongodb

app = Flask(__name__)
mongo = os.getenv('MONGODB')
client = MongoClient(mongo)
db = client.products_db
products = db.products
grid_fs = gridfs.GridFS(db)

Итак, для первого блока кода я сохранил изображение в gridFS с использованием этого кода. Я считаю, что использование grid_fs.put вернет идентификатор, и это позволит вам вызывать его из других файлов fs.chunks и fs.files

@app.route('/image/', methods = ["POST"])
def saveImage():
if 'image' in request.files:
    image = request.files['image']
    name = request.form.get('name')
    id = grid_fs.put(image, content_type = pimage.content_type, filename = name)
query = {
    'id':id,
    'name': request.form.get('name'),
    'desc':request.form.get('desc'),
}
status = products.insert_one(query)
if status:
    return jsonify({'result': 'Image uploaded successfully'}),201
return jsonify({'result': 'Error occurred during uploading'}),500

, чтобы получить изображение из grid_fs. Мне пришлось использовать кодеки pip install для использования кодеков

item = products.find_one({'id': id})
image = grid_fs.get(item['id'])
base64_data = codecs.encode(image.read(), 'base64')
image = base64_data.decode('utf-8')

Затем его можно отобразить на html, используя изображение в html - двоичную строку, полученную из grid_fs

<img src = "data:image/png;base64, {{image}}" alt= "myImage"/>
0 голосов
/ 11 марта 2020

в вызове get api, который вы должны присвоить своему URL-адресу foldername (в том, что содержит изображения), затем он автоматически отобразит изображения в этой конкретной папке (например, http://localhost/url/folder/image.jpeg)

...