如何在不先将文件保存到磁盘的情况下将"qrcode.make"的结果传递给 Flask 的"send_file"?



目前我正在使用烧瓶中的"send_file",但它会读取打开文件的路径。我已经加载了文件并想返回它,尽管我找不到该功能。有什么想法吗?

例:

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'

您需要将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')

最新更新