
本文介绍如何构建一个Flask接口,从MySQL数据库读取图片,并以原始二进制格式返回给前端。
核心方法:
Flask的send_file()函数是关键。它接收包含图片二进制数据的对象以及MIME类型字符串作为参数,从而实现二进制流的返回。MySQL数据库通常使用BLOB数据类型存储图片。
代码示例:
<code class="python">from flask import Flask, send_file, request
from 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}", 500
if __name__ == '__main__':
app.run(debug=True)</code>说明:
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数据库中的图片二进制流?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号