MySQL数据库本身并不直接支持文件上传功能,但可以通过以下几种方式实现文件与数据库的关联:
原因:上传大文件时,如果一次性读取整个文件到内存中,可能会导致内存溢出。
解决方法:
import mysql.connector
from mysql.connector import Error
def upload_file(file_path, file_name):
try:
connection = mysql.connector.connect(host='localhost',
database='testdb',
user='root',
password='password')
cursor = connection.cursor()
with open(file_path, 'rb') as file:
binary_data = file.read()
sql_insert_query = """ INSERT INTO files (file_name, file_data) VALUES (%s, %s) """
cursor.execute(sql_insert_query, (file_name, binary_data))
connection.commit()
print("File uploaded successfully into files table")
except Error as e:
print(f"Error while connecting to MySQL", e)
finally:
if connection.is_connected():
cursor.close()
connection.close()
print("MySQL connection is closed")
upload_file('path/to/file.jpg', 'file.jpg')参考链接:
原因:文件路径存储时,可能由于路径设置错误或文件权限问题导致无法访问文件。
解决方法:
import os
def save_file(file_path, save_directory):
if not os.path.exists(save_directory):
os.makedirs(save_directory)
file_name = os.path.basename(file_path)
save_path = os.path.join(save_directory, file_name)
with open(file_path, 'rb') as src_file, open(save_path, 'wb') as dest_file:
dest_file.write(src_file.read())
return save_path
file_path = 'path/to/file.jpg'
save_directory = 'uploads'
saved_path = save_file(file_path, save_directory)
print(f"File saved at: {saved_path}")参考链接:
MySQL数据库可以通过BLOB类型或文件路径存储的方式实现文件上传。选择合适的方式取决于具体需求和应用场景。在处理大文件上传时,需要注意内存管理;在存储文件路径时,需要确保路径正确且文件可访问。
没有搜到相关的文章