Как я могу передать результат `qrcode.make` в Flask` send_file`, не сохраняя файл сначала на диск? - PullRequest
0 голосов
/ 24 января 2020

В настоящее время я использую "send_file" из flask, но он читает по пути, чтобы открыть файл. Я уже загрузил файл и хочу его вернуть, хотя не могу найти для этого функцию. Любые идеи?

Пример:

return send_file(filename_or_fp="../file.jpg", mimetype='image/jpeg')

Я хочу вернуть это так:

file = qrcode.make("sample text")
return send_file(filename_or_fp=file, mimetype='image/jpeg')

send_files возвращает следующую ошибку: AttributeError: 'Image' object has no attribute 'read'

1 Ответ

1 голос
/ 24 января 2020

Вам необходимо сохранить file в буфере BytesIO, а затем передать его в функцию send_file.

Кроме того, вам не нужно писать filename_or_fp=, поскольку это позиционное аргумент.

Приложение должно выглядеть так:

import qrcode
from flask import Flask, send_file
import io

app = Flask(__name__)

@app.route('/')
def index():
    file = qrcode.make('sample text')
    buf = io.BytesIO()
    file.save(buf)
    buf.seek(0)
    return send_file(buf, mimetype='image/jpeg')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...