使用 PyMongo GridFS 进行文件上传和下载

2023-04-15 00:00:00 pymongo 下载 文件上传

PyMongo 是 Python 下的 MongoDB 非官方驱动程序,支持多种操作 MongoDB 的方法,其中包括了 MongoDB 中的特殊数据类型 —— GridFS。

GridFS 是 MongoDB 中一种用于存储和检索大型二进制文件(如图片、视频、音频等)的方法。GridFS 将大文件分成小块存储在 MongoDB 的文档中,使得 MongoDB 可以轻松地管理这些文件。

使用 PyMongo GridFS 进行文件上传和下载,需要将 PyMongo GridFS 中的 GridFSBucket 对象作为参数传入 MongoClient 构造函数中,接着即可使用 GridFSBucket 的方法进行文件的上传、下载、删除等操作。

下面是一个代码演示,其中上传了一个字符串“pidancode.com”为文件名为“pidancode.txt”的文件,并下载并读取了该文件的内容:

from pymongo import MongoClient
from gridfs import GridFSBucket

# 连接 MongoDB
client = MongoClient()

# 获取 GridFSBucket 对象
fs = GridFSBucket(client.example_database)

# 上传文件
file_id = fs.upload_from_stream("pidancode.txt", "pidancode.com")

# 下载文件
file_data = fs.open_download_stream_by_name("pidancode.txt").read().decode("utf-8")
print(file_data)

这段代码中,GridFSBucket() 的参数可以是任意一个已连接的数据库。upload_from_stream() 方法将字符串“pidancode.com”上传,并将其命名为“pidancode.txt”,方法的返回值为文件在 MongoDB 中的 _idopen_download_stream_by_name() 方法按照文件名打开相应的文件,并返回一个缓冲区对象,最后用 decode() 方法将缓冲区对象转化为字符串并输出。

相关文章