Как я могу получить доступ к изображениям в запросе (с помощью dropzone-flask)? - PullRequest
0 голосов
/ 23 апреля 2019

Я хочу загрузить изображение с помощью dropzone (колба) и после загрузки страницы показа с этим изображением (из запроса я не хочу сохранять изображение на диск, как в этом примере) и именем файла.Я нашел пример на github https://github.com/greyli/flask-dropzone/blob/master/examples/in-form/app.py

from flask import Flask, render_template, request
from flask_dropzone import Dropzone

basedir = os.path.abspath(os.path.dirname(__file__))

app = Flask(__name__)

app.config.update(
    UPLOADED_PATH=os.path.join(basedir, 'uploads'),
    # Flask-Dropzone config:
    DROPZONE_ALLOWED_FILE_TYPE='image',
    DROPZONE_MAX_FILE_SIZE=3,
    DROPZONE_MAX_FILES=1,
    DROPZONE_IN_FORM=True,
    DROPZONE_UPLOAD_ON_CLICK=True,
    DROPZONE_UPLOAD_ACTION='handle_upload',  # URL or endpoint
    DROPZONE_UPLOAD_BTN_ID='submit',
)

dropzone = Dropzone(app)


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


@app.route('/upload', methods=['POST'])
def handle_upload():
    for key, f in request.files.items():
        if key.startswith('file'):
            print( f.filename)
    return '', 204


@app.route('/form', methods=['POST'])
def handle_form():
    ############################################
    #i want to access request.files.items() there
    #############################################

    title = request.form.get('title')
    description = request.form.get('description')
    return 'file uploaded and form submit<br>title: %s<br> description: %s' % (title, description)


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

после загрузки изображений в handle_upload (), я могу получить изображения из запроса, но для рендеринга шаблона в handle_form () мне нужно сохранить изображения на диск.я хочу отправить изображения из handle_upload () в handle_form () (без использования глобальных переменных)

1 Ответ

0 голосов
/ 24 апреля 2019

Вы не можете получить файл изображения из запроса в handle_form () , если изображение было отправлено в handle_upload () . См. Контекст времени жизни запроса

У вас есть 2 варианта:

  • Вернуть непосредственно изображение и имя файла в handle_upload () (контекст все еще существует)
  • Сохранить файл изображения на диске
...