帮助将用户上载的文件转换为BLOB。无法识别返回的文件名路径:未找到文件错误:[Errno 2]没有这样的文件或目录:'****. png'没有blob对话,它可以工作,但需要blob文件输入
应用程序(例如,使用"admin"用户ID)
@app.route("/upload", methods=["GET", "POST"])
def upload():
if request.method == "GET":
return render_template("upload.html")
else:
file_upload = convert_into_binary(request.form.get("file_upload"))
print(file_upload)
secure_file = secure_filename(file_upload)
db.execute("INSERT INTO uploads (user_id, file, timestamp) VALUES (?,?,?)", ("admin", secure_file, datetime.now()))
return render_template("index.html")
转换为二进制代码
def convert_into_binary(file_path):
with open(file_path, 'rb') as file:
binary = file.read()
return binary
Sqlite数据库创建
db.execute("CREATE TABLE IF NOT EXISTS uploads(id INTEGER, user_id NUMERIC NOT NULL, file BLOB NOT NULL, timestamp TEXT, PRIMARY KEY(id))")
用于表单输入的HTML(使用bootstrap css)
<form action="/upload" method="post" class="upload-form text-center">
<div class="mb-3">
<input autocomplete="off" autofocus class="form-control mx-auto w-auto" id="file_upload" name="file_upload" placeholder="Upload" type="file" accept="image/*">
</div>
<button class="btn btn-primary mx-auto" type="submit">Upload</button>
</form>
希望能够上传图片和视频到数据库中的"上传"表(暂时只接受图片测试)。
1条答案
按热度按时间kkih6yb81#
要使用SQLite在Flask应用中将上传的文件转换为BLOB(二进制大对象),您可以使用以下步骤:
在HTML表单中,确保有一个文件输入字段供用户选择文件。
在Flask路由中,使用request.files对象获取上传的文件。
使用file对象上的read()方法读取文件的内容。
使用bytes()函数将内容转换为二进制字符串。
将二进制字符串作为BLOB存储在SQLite数据库中。
下面是一个Flask路由中的代码示例,用于将上传的文件转换为BLOB并将其存储在SQLite数据库中:
在本例中,mydatabase.db是SQLite数据库的名称,mytable是数据库中要存储BLOB的表的名称。请确保在运行此代码之前创建具有BLOB列的表。