使用MongoDB的PyMongo驱动程序时,我能够使用bucket.upload_from_stream(文件名,地址)成功将图像上传到GridFS。它非常简单,没有任何并发症。 但是当我尝试使用bucket.download_to_stream_by_name(文件名,地址)检索相同的数据时,第二个参数作为目标,它会抛出一个错误: AttributeError:' unicode'对象没有属性'写'
为什么会这样?如何设置我要保存文件的位置?
答案 0 :(得分:0)
以下是使用download_to_stream_by_name并在磁盘上的目录中创建文件的示例:
import os
from pymongo import MongoClient
from gridfs import GridFSBucket
my_db = MongoClient().test
fs = GridFSBucket(my_db)
file_id = fs.upload_from_stream(
"test_file",
"data I want to store!",
chunk_size_bytes=4,
metadata={"contentType": "text/plain"})
fs = GridFSBucket(my_db)
# Get file to write to
if not os.path.exists('my_directory'):
os.makedirs('my_directory')
file = open('my_directory/myfile','wb')
fs.download_to_stream_by_name("test_file", file)
A"类文件对象"是一个有"写"占用大块字符的方法。由" open"创建的实际文件对象。函数是文件类对象的一种可能性。
注意,传递给download_to_stream_by_name的文件名是GridFS中的文件名,而不是磁盘上的文件名。