使用 PyMongo GridFS 进行文件上传和下载
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 中的 _id
。open_download_stream_by_name()
方法按照文件名打开相应的文件,并返回一个缓冲区对象,最后用 decode()
方法将缓冲区对象转化为字符串并输出。
相关文章