Рендеринг изображения из gridfs на HTML-странице, используя колбу - PullRequest
0 голосов
/ 29 сентября 2019

Я хочу сделать изображение из gridfs на моем HTML-Pyge, используя колбу.Я храню изображение в моем mongodb, используя gridfs с одной кнопкой, а также сохраняю ObjectId изображения в сеансе на стороне сервера, используя Flask-Session.Когда я нажимаю на другую кнопку, я получаю правильный ObjectId изображения, сохраненного ранее через мой сеанс, а затем хочу отобразить это изображение из gridfs на моей html-странице, но я не знаю, как это сделать.

Мой app.py файл:

from flask import Flask, render_template, request, redirect, session
from werkzeug.utils import secure_filename
from pymongo import MongoClient
from gridfs import GridFS
from flask_session import Session

DB = 'test-grid'
COLLECT = 'test-session'


client = MongoClient('mongodb://127.0.0.1:27017')
db = client[DB]
fs = GridFS(db)


app = Flask(__name__)
app.config['MAX_CONTENT_LENGTH'] = 16*1024*1024
app.config['SESSION_TYPE'] = 'mongodb'
app.config['SESSION_MONGODB'] = client
app.config['SESSION_MONGODB_DB'] = DB
app.config['SESSION_MONGODB_COLLECT'] = COLLECT
Session(app)


@app.route("/")
def home():
    return render_template("index.html")


@app.route('/upload', methods=['POST'])
def upload_file():
    if request.method == 'POST':
        f = request.files['file']
        filename = secure_filename(f.filename)
        f_id = fs.put(f, filename=filename)
        session['f_id'] = f_id
        session['filename'] = filename
        return redirect('/')


@app.route('/display', methods=['GET'])
def display_file():
    if request.method == 'GET':
        f = fs.get(session['f_id'])
        image = f.read()
        return render_template("index.html", user_image=image)


if __name__ == "__main__":
    app.run(debug=True)

Мой index.html файл:

<html lang='en'>
  <head>
    <meta charset='UTF-8'/>
  </head>
  <body>
    <form method="post" action="/upload" enctype="multipart/form-data">
        <input type="file" onchange="this.form.submit()" name="file" autocomplete="off" required>
    </form>
    <form method="get" action="/display">
        <input type="submit" value="Display">
    </form>
    <img src="{{ user_image }}" alt="Show image here"/>
  </body>
</html>

Мой requirements.txt файл:


Flask
Flask-Session
pymongo

Но это не такне работает, и я получаю следующий вывод: Выход

Может кто-нибудь, пожалуйста, помогите мне исправить это?Может быть, с примерами я могу посмотреть.

...