
Flask应用从MySQL数据库读取并返回图片二进制流
本文介绍如何构建一个Flask接口,从MySQL数据库读取图片,并以原始二进制格式返回给前端。
核心方法:
Flask的send_file()函数是关键。它接收包含图片二进制数据的对象以及MIME类型字符串作为参数,从而实现二进制流的返回。MySQL数据库通常使用BLOB数据类型存储图片。
代码示例:
from flask import Flask, send_file, requestfrom flask_mysqldb import MySQL # 假设你使用了flask-mysqldb库app = Flask(__name__)# MySQL数据库配置 (替换为你的实际配置)app.config['MYSQL_HOST'] = 'your_db_host'app.config['MYSQL_USER'] = 'your_db_user'app.config['MYSQL_PASSWORD'] = 'your_db_password'app.config['MYSQL_DB'] = 'your_db_name'mysql = MySQL(app)@app.route('/get_image', methods=['GET'])def get_image(): image_id = request.args.get('image_id') try: cur = mysql.connection.cursor() cur.execute("SELECT image_data FROM images WHERE id = %s", (image_id,)) # images表,image_data字段存储图片 result = cur.fetchone() cur.close() if result: image_data = result[0] return send_file(io.BytesIO(image_data), mimetype='image/jpeg') # io.BytesIO用于处理二进制数据 else: return "Image not found", 404 except Exception as e: return f"Error: {e}", 500if __name__ == '__main__': app.run(debug=True)
说明:
代码中假设你使用了flask-mysqldb库连接MySQL数据库。你需要安装它:pip install Flask-MySQLdb。替换代码中的数据库配置为你自己的配置。images表和image_data字段名需要根据你的数据库结构进行调整。image/jpeg是MIME类型,根据你的图片格式调整(例如image/png)。加入了错误处理,返回更友好的错误信息。使用了io.BytesIO将二进制数据转换为可由send_file处理的流对象。 需要导入import io
此接口接受image_id作为查询参数,从数据库中检索对应的图片,并以二进制流的形式返回给前端。前端应用可以根据需要处理接收到的二进制数据。 记得处理潜在的异常,例如数据库连接错误或图片不存在的情况。
以上就是Flask如何返回MySQL数据库中的图片二进制流?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1357126.html
微信扫一扫
支付宝扫一扫