Имеется база данных, в которой хранятся изображения в поле BLOB. Пытаюсь вывести их в браузер. Сайт на Flask.
На PHP решалось скриптом, вроде такого:
$img=mysql_query("SELECT `emblem_len`, `emblem_data` FROM `icons` WHERE `icon_id` = $id");
$img_row = mysql_fetch_array($img);
Header("Content-Disposition: inline; filename=".$id.".png");
Header("Content-type: image/png");
Header("Content-length: ".(int)$img_row["emblem_len"]);
echo $img_row["emblem_data"];
Сейчас у меня получилось примерно так:
@app.route("/show_icon/<int:pid>.png")
def show_icon(pid):
db = pydb.get_db()
cursor = db.cursor()
sql = "SELECT `emblem_data`, `emblem_len` FROM `icons` WHERE `icon_id` = %s;"
cur = cursor.execute(sql % (pid))
image = cursor.fetchone()
resp = make_response(image[0])
resp.headers['Content-Type'] = 'image/png'
resp.headers['Content-Length'] = image[1]
resp.headers['Content-Disposition'] = 'inline; filename="%s.png"' % (pid)
return resp
Выводится текст поля, заголовки отсылаются, но картинка не показывается.
P.S. Вопрос не о том, где лучше хранить картинки. Картинки хранятся в базе независимо от меня, мне нужно их вывести в браузер.