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',

});

}

},