上传图片到数据库
Contents
上传图片到数据库
以BLOB形式
上传图像
@app.route('/api/upload', methods=['POST'])
def save_text_and_image():
title = request.form.get('title', '') \# 获取标题
bodyText = request.form.get('bodyText', '') \# 获取正文文本
user = request.form.get('user', '') \# 获取用户信息
file = request.files.get('file') \# 获取上传的文件
\# 验证标题、正文文本和文件是否存在
if not title or not bodyText:
return 'No text provided', 400
if not file or file.filename == '':
return 'No file provided', 400
filename = secure_filename(file.filename)
image_content = file.read()
\# 使用 database_config 模块获取数据库连接
connection = get_db_connection()
try:
with connection.cursor() as cursor:
\# 插入标题和正文文本
cursor.execute('INSERT INTO texts (title, content) VALUES (%s, %s)', (title, bodyText))
\# 插入图像
cursor.execute("INSERT INTO images (image) VALUES (%s)", (image_content,))
\# 提交事务
connection.commit()
except Exception as e:
connection.rollback()
return f'An error occurred: {str(e)}', 500
finally:
connection.close()
return 'Text and Image successfully uploaded', 200
查看图像
\# 查看数据库中的图像
@app.route('/get-image/\<int:image_id\>')
def get_image(image_id):
\# 使用 database_config 模块获取数据库连接
connection = get_db_connection()
try:
with connection.cursor() as cursor:
\# 执行SQL查询
sql = "SELECT image FROM images WHERE id = %s"
cursor.execute(sql, (image_id,))
result = cursor.fetchone()
if result:
\# 返回图像数据,假设图像是 JPEG 格式
return Response(result[0], mimetype='image/jpeg')
else:
return 'Image not found', 404
finally:
connection.close()
将图片的路径存储在数据库中
上传图像
实际的图片存储在服务器的磁盘上,减小数据库的存储压力。
@app.route('/api/upload', methods=['POST'])
def save_text_and_image():
title = request.form.get('title', '') \# 获取标题
bodyText = request.form.get('bodyText', '') \# 获取正文文本
user = request.form.get('user', '') \# 获取用户信息
imageUrl = request.form.get('imageUrl', '') \# 获取图像 URL
\# 验证标题、正文文本和图像 URL 是否存在
if not title or not bodyText:
return 'No text provided', 400
if not imageUrl:
return 'No image URL provided', 400
\# 使用 database_config 模块获取数据库连接
connection = get_db_connection()
try:
with connection.cursor() as cursor:
\# 插入标题和正文文本
cursor.execute('INSERT INTO texts (title, content) VALUES (%s, %s)', (title, bodyText))
\# 插入图像 URL
cursor.execute("INSERT INTO images (imageUrl) VALUES (%s)", (imageUrl,))
\# 提交事务
connection.commit()
except Exception as e:
connection.rollback()
return f'An error occurred: {str(e)}', 500
finally:
connection.close()
return 'Text and Image URL successfully uploaded', 200
查看图像
// 用户点击发布按钮时调用
uploadContent() {
if (this.src.length === 0) {
uni.showToast({
title: '请先选择图片',
icon: 'none'
});
return;
}
this.src.forEach((filePath) =\> {
uni.uploadFile({
url: 'http://127.0.0.1:5000/api/upload',
filePath: filePath,
name: 'file',
formData: {
'title': this.title,
'bodyText': this.bodyText,
'imageUrl': this.imageUrl, // 发送图像 URL
'user': 'test'
},
success: (res) =\> {
console.log('上传成功', res);
},
fail: (error) =\> {
console.log('上传失败', error);
}
});
});
// 上传完数据后,跳转到广场页面
uni.switchTab({
url: '/pages/square/square',
});
}
},