需求:
后端不断产生新的图片数据,发送给前端,前端然后显示。
方案:
1.后端可以生成一个图片URL地址,然后返回给前端【采用】
2.或者返回base64
疑问:
将图片文件夹放在nginx里面就会生成图片的URL地址吗????
如何将图片的URL地址保存到数据库呢???
怎么和数据库对应上呢???
步骤:



import os
import time
import pymysql
# 配置MySQL数据库连接信息
db = pymysql.connect(
host='localhost',
user='root',
password='password',
database='mydb',
charset='utf8mb4'
)
# 配置Nginx服务器中保存图片的目录
image_dir = '/var/www/static/images'
# 定义函数,将新上传的图片信息保存到MySQL数据库中
def save_image_to_db(image_path):
with db.cursor() as cursor:
# 生成图片URL地址
image_url = f'http://localhost/images/{os.path.basename(image_path)}'
# 将图片URL地址和文件路径保存到MySQL数据库中
sql = 'INSERT INTO images (url, path) VALUES (%s, %s)'
cursor.execute(sql, (image_url, image_path))
db.commit()
# 定义函数,监控指定目录下的文件变化
def watch_dir(dir_path):
# 获取目录下当前的所有文件
current_files = set(os.listdir(dir_path))
while True:
# 获取目录下当前的所有文件
current_files = set(os.listdir(dir_path))
# 暂停一段时间
time.sleep(1)
# 获取目录下最新的文件
new_files = set(os.listdir(dir_path)) - current_files
# 如果有新文件上传,将其保存到MySQL数据库中
for file_name in new_files:
if file_name.endswith('.jpg') or file_name.endswith('.png'):
file_path = os.path.join(dir_path, file_name)
save_image_to_db(file_path)
if __name__ == '__main__':
# 启动监控指定目录的程序
watch_dir(image_dir)

from flask import Flask, jsonify
import pymysql
app = Flask(__name__)
# 连接mysql数据库
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
db='example_db',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
# 查询所有图片URL并返回给前端
@app.route('/images')
def get_images():
with conn.cursor() as cursor:
cursor.execute('SELECT url FROM images')
urls = [row['url'] for row in cursor.fetchall()]
return jsonify(urls)
# 关闭数据库连接
@app.teardown_appcontext
def close_db(error):
conn.close()
浙公网安备 33010602011771号